Как обеспечить последовательные идентификаторы игроков в фотоне, когда игроки присоединяются/покидают комнату (без пробеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как обеспечить последовательные идентификаторы игроков в фотоне, когда игроки присоединяются/покидают комнату (без пробе

Сообщение Anonymous »

Я работаю над многопользовательской игрой, используя Photon в Unity, где игроки присоединяются к комнате и появляются на определенных позициях на основе их Actornumber. Однако, когда игрок покидает комнату, и присоединяется новый игрок, я сталкиваюсь с проблемой, в которой идентификаторы игрока (то есть Actornumber) не всегда следуют последовательному порядку, который вызывает пробелы в положениях спауна (например, я могу получить Actornumber 1, затем 3, затем 4). позиций. Когда игрок уйдет, а другой присоединяется, новый игрок может получить ранее используемый Actornumber, который может привести к отсутствующим позициям в последовательности. /> Актер 2 получает Actornumber 2 < /li>
Актер 3 получает Actornumber 3 < /li>
< /ul>
, но если игрок 2, например, покидает комнату, а новый игрок придет за ним, тогда он будет: < /p>
Actor 4 Actorm 4, но мне нужен < /p> actor. потому что, как я сказал, актер 2 вышел.public class SpawnPlayers : MonoBehaviourPunCallbacks
{
public GameObject playerPRE;

private Dictionary waitingRoomSpawnPositions = new Dictionary()
{
{1, new Vector3(0, 0, 0)},
{2, new Vector3(0.85f, 0, 1.25f)},
{3, new Vector3(-0.85f, 0, 1.25f)},
{4, new Vector3(-1.7f, 0, 2.5f)},
{5, new Vector3(1.7f, 0, 2.5f)},
{6, new Vector3(0.85f, 0, 3.75f)},
{7, new Vector3(-0.85f, 0, 3.75f)},
{8, new Vector3(0, 0, 2.5f)}
};

public void PlayerSpawn()
{
// int actorNumber = actorNumberManager.AssignActorNumber(); // Assign a unique actor number.
int actorNumber = PhotonNetwork.LocalPlayer.ActorNumber;

Vector3 spawnPosition = Vector3.zero;

if (SceneManager.GetActiveScene().name == "Home")
{
waitingRoomSpawnPositions.TryGetValue(actorNumber, out spawnPosition);
spawnPosition = new Vector3(spawnPosition.x, spawnPosition.y, spawnPosition.z);
PhotonNetwork.Instantiate(playerPRE.name, spawnPosition, Quaternion.Euler(0, 160f, 0));
}
}

public override void OnJoinedRoom()
{
PlayerSpawn();
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -a-room-wi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»