如何在无尽的转轮3d中产生随机物体?

时间:2017-12-04 14:48:16

标签: c# unity3d 3d unity5

大家好我正在开发一款无尽的亚军游戏,需要帮助才能解决问题。我的无尽跑步者版本是玩家沿着z轴移动而玩家在玩家面前产生的地方。瓷砖有3个车道。所以我的问题是这个。我有这个产生的脚本,我从研究网络得到的,并遇到了脚本被写入的问题,其中瓷砖在播放器下移动而不是播放器向前移动。我试图转换它,以便在玩家面前产生这些对象(z轴),但我没有达到我想要的目的。

所以我的错误是,

  • 对象(障碍物)在玩家后面产生并最终停止
  • 仅在一个通道中生成对象。

那么我该如何纠正上述错误?

这是我的剧本。

public class Spawner : MonoBehaviour {

    [Space(10)]
    [Header("Obstacles:")]
    public float objectSpawnWait;
    public Vector3 randPos1;
    public Vector3 randPos2;
    public Vector3 randPos3;
    public float spawnZ; //distance between player and the object 
    public float spawnDistance; //distance between object
    public GameObject[] obstacles;

    private Transform playerTranform;

    void Start()
    {
        playerTranform = GameObject.FindGameObjectWithTag("Player").transform;

    }

    void Update()
    {
        if(playerTranform.position.z > spawnZ * spawnDistance)
        {
            StartCoroutine(SpawnObstacle());
        }
    }

    IEnumerator SpawnObstacle()
    {
        if (obstacles.Length > 0)
        {
            int randomObstacle = Random.Range(0, obstacles.Length);            

            GameObject obstacle = Instantiate(obstacles[randomObstacle]);
            obstacle.transform.SetParent(transform);
            MoveObjectsToTheFront(obstacle);
        }

        yield return new WaitForSeconds(5);
    }

    private void MoveObjectsToTheFront(GameObject moveObject)
    {
        int randomPosNum = Random.Range(0, 2);
        Vector3 randomPosition;

        if (randomPosNum == 0)
            randomPosition = randPos1; // Vector3(2, 0.5, 5)
        else if (randomPosNum == 1)
            randomPosition = randPos2; // Vector3(0, 0.5, 5)
        else
            randomPosition = randPos3; // Vector3(-2, 0.5, 5)

        moveObject.transform.position = randomPosition * spawnZ;
        spawnZ += spawnDistance;
    }
}

非常感谢任何帮助。感谢。

0 个答案:

没有答案