Как изменить расстояние / радиус от центра, в котором создаются объекты - PullRequest
0 голосов
/ 05 марта 2020

Как можно было бы переместить 8 "кубиков" экземпляров объектов ближе к столбу.

public void instantiateInCircle()
{
for (int i = 0; i < amount; i++)
{
    float radius = 8;
    float angle = i * Mathf.PI * 2f / radius;
    Vector3 newPos = transform.position + (new Vector3(Mathf.Cos(angle) * radius, spawnHeight, Mathf.Sin(angle) * radius ));


    GameObject instantiatedObject = Instantiate(itemToSpawn, newPos, Quaternion.Euler(0, 0, 0));
    instantiatedObject.transform.LookAt(spawnAroundThis.transform);
    instantiatedObject.transform.parent = spawnAroundThis.transform;
    instantiatedObject.transform.localScale = new Vector3(scale, scale, scale);

     //this seems to work-ish , not sure if its good math but hey :)
     //Thanks BugFinder!
    instantiatedObject.transform.position = instantiatedObject.transform.position += instantiatedObject.transform.forward * distance;


    }
}

В идеале их можно подвинуть ближе к столбу enter image description here

Ответы [ 2 ]

1 голос
/ 05 марта 2020

В связи с тем, что ваш код уже направляет объект туда, куда вы пытаетесь приблизиться, вам нужно только переместить объект вперед, пока он не окажется на правильном расстоянии.

0 голосов
/ 05 марта 2020

Уменьшение значения переменной radius должно породить их ближе к столбу.

Поскольку вы смещаете положение куба от положения столба с помощью косинусных и синусоидальных составляющих радиуса, это приведет к они правильно расположены вокруг колонны.

Кроме того, я считаю,

float angle = i * Mathf.PI * 2f / radius;

Должно быть действительно

float angle = i * Mathf.PI * 2f / amount;

Радиус не должен влиять на угол появления объекта, но количество предметов должно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...