как часто создавать и перемещать сборные объекты? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть игровой объект spawner, который порождает 2 падающих префаба случайным образом.

Первая версия spawner содержала только систему порождения, и эффект падения был компонентом, который был у префабов, проблема была в том, что яхотел, чтобы в процессе игры SpawnRatio и скорость падения увеличивались с синхронизацией, поэтому я объединил системы нереста и падения в игровой объект spawner, и теперь по какой-то причине объекты появляются, но не падают.

public class Random_Spawn : MonoBehaviour {

    public GameObject cube, circle;

    public float spawnRate = 2f;
    static float fallSpeed = 2f;

    float nextSpawn = 0f;

    int whatToSpawn;

    void Update()
    {
        if (Time.time > nextSpawn)
        {
            whatToSpawn = Random.Range(1, 3);

            switch (whatToSpawn)
            {
                case 1:
                    GameObject myCube = (GameObject)Instantiate(cube, transform.position, Quaternion.identity);
                    myCube.transform.Translate(Vector2.down * fallSpeed * Time.deltaTime, Space.World);
                    myCube.transform.parent = transform;
                    break;
                case 2:
                    GameObject myCircle = (GameObject)Instantiate(circle, transform.position, Quaternion.identity);
                    myCircle.transform.Translate(Vector2.down * fallSpeed * Time.deltaTime, Space.World);
                    myCircle.transform.parent = transform;
                    break;
            }

            nextSpawn = Time.time + spawnRate;
            if (spawnRate >= 0.05)
            {
                spawnRate -= 0.04f;
                fallSpeed -= 0.04f;
            }
        }
    }
}

1 Ответ

0 голосов
/ 03 октября 2018

Проблема в том, что вы вызываете Vector.Translate только один раз для каждого порожденного объекта.Это нужно вызывать каждый кадр для продолжения движения.

Лучше всего присоединить отдельный сценарий движения к кубу и префабам окружности, которые вызывают Vector.Translate в их собственных функциях Update ().

Чтобы справиться с растущей скоростью падения, у вас может быть ссылка на новый сценарий движения на переменную fallSpeed из вашего сценария spawner для настройки скорости Vector.Translate.

speed = spawner.GetComponent<Random_Spawn>().fallSpeed;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...