пытаясь увеличивать экземплярную позицию каждый раз, когда создается объект UNITY C # - PullRequest
0 голосов
/ 09 мая 2018

Мне интересно, как бы я настроил следующий код для увеличения позиции экземпляра при каждом создании объекта, чтобы они все выстраивались в ряд рядом друг с другом. В настоящее время они просто сражаются за одно и то же место и начинают танцевать друг с другом по кругу.

public void AddUnit(string unitName, Vector3 spawnPoint, Vector3 rallyPoint, Quaternion rotation, Building creator)
    {
        rallyPoint += new Vector3(-10, 0, 0);
        Units units = GetComponentInChildren<Units>();
        spawnPoint += new Vector3(0, 0, -8);
        GameObject newUnit = (GameObject)Instantiate(ResourceManager.GetUnit(unitName), spawnPoint, rotation);
        newUnit.transform.parent = units.transform;
        Unit unitObject = newUnit.GetComponent<Unit>();

        if (unitObject)
        {

            unitObject.SetBuilding(creator);
            if (spawnPoint != rallyPoint)
            {

                unitObject.StartMove(rallyPoint);

            }
        }
    }

1 Ответ

0 голосов
/ 09 мая 2018

Это очень просто.Просто переместите этот код

    spawnPoint += new Vector3(0, 0, -8);

за пределы функции AddUnit (), туда, где она вызывается вместо этого.

Идея состоит в том, чтобы увеличивать начальную позицию каждый раз, когда вы вызываете функцию.Вот пример.

void Update()
{
    spawnPoint += new Vector3(0, 0, -8);
    AddUnit(unitName, spawnPoint, rallyPoint, rotation, creator);
}
...