光子网络在不同点产生的播放器

问题描述 投票:0回答:1

[大家好,我正尝试使用Photon Networking for Unity制作RTS游戏。我要做什么取决于特定房间中的玩家(在此示例中为2),所有玩家在不同的位置生成。我遇到的麻烦是制作一个在游戏开始并调用PhotonNetwork.Instantiate时在不同位置而不是在同一位置生成玩家的系统。我如何使用带有列表的SpawnPositions来检查玩家是否已经在给定位置生成,如果是,那么它将在下一个生成,我希望如果您需要知道其他任何内容,我希望我涵盖了所有内容。

        private GameObject playerPrefab; // Players Prefab
        [SerializeField]
        public Transform[] SpawnPositions; // 2 Spawn Positions in The unity Heirarchy

        public List<Vector3> spawnPoints = new List<Vector3>(); // List of spawnpoints to add to

        void Start()
        {

        PhotonNetwork.Instantiate(playerPrefab.name, [what to do here], Quaternion.Euler(0, 0, 0));

        }
c# unity3d instantiation photon spawning
1个回答
0
投票

您可以生成衍生点。我使生成点自动找到合适的高度。如果不需要自动高度,则可以使用空的MonoBehaviour甚至使用标签。您可以使用此脚本在不同位置制作多个GameObject。

...
public class spawnPoint : MonoBehaviour {
    public bool autoHeight = true;
    public LayerMask putOnTopOfThese;
    // Use this for initialization
    void Start () {
        RaycastHit hit;
        Physics.Raycast (transform.position + Vector3.up * 100, -Vector3.up, out hit, 200, putOnTopOfThese);
        transform.position = hit.point + Vector3.up;
    }
}

要使每个玩家生成在不同的位置,您可以在生成点之间循环。请记住,如果将标记用于生成点而不是MonoBehaviour,则需要使用GameObject.FindObjectsWithTag而不是FindObjectsOfType

用于在不同位置产卵:

private int spawnIndex;
...
void CreatePlayerObject()
    {
        spawnPoint[] sp = GameObject.FindObjectsOfType<spawnPoint> ();
        if(spawnIndex >= sp.length) spawnIndex = 0;
        Vector3 position = sp [spawnIndex].transform.position;

        GameObject newPlayerObject = Instantiate(player, position, Quaternion.identity);
        spawnIndex++;
    }
...

对于随机生成:

...
void CreatePlayerObject()
    {
        spawnPoint[] sp = GameObject.FindObjectsOfType<spawnPoint> ();
        int chosen = Random.Range (0, sp.Length);
        Vector3 position = sp [chosen].transform.position;

        GameObject newPlayerObject = Instantiate(player, position, Quaternion.identity);
    }
...

编辑:清晰度

© www.soinside.com 2019 - 2024. All rights reserved.