@Timur975787

Как спавнить пули ровно?

if (shotgun)
        {
            float f = Mathf.Deg2Rad * 30;// 30 градусов
            for (int i = -2; i < 3; i++)
            {
                float x = Mathf.Sin(f / 1 * i);
                float y = Mathf.Cos(f / 1 * i);
                Vector3 spawnPos = new Vector3(x,y,0);      
                Instantiate(bullet, bulletSpawnPos.position + spawnPos / 2, bulletSpawnPos.rotation);
            }
        }

Если повернуть игрока пули начнут спавниться вот как на этом фото. 63df4be532b6e156121692.jpeg
Я хотел бы чтобы пули появлялись как тогда когда игрок стреляет прямо куда бы он не повернул (как на этом фото
63df4b7ba04ed490958772.jpeg)
Как это сделать?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
@Unitizer
Как вариант можно добавить пули к родительскому объекту, тогда станет доступно изменение локальных координат пуль.
Юнити при вращении родительского объекта будет трансформировать позицию дочернего объекта в мировые координаты с учётом локальных.
Допустим создали объект с localPosition (2, -5, 0), и если у родителя мировые координаты (5, 30, 0), то у дочернего объекта мировые координаты после сложения будут (7, 25, 0). Также и вращение.

Пример:
GameObject go = Instantiate(bullet, bulletSpawnPos.transform); // второй параметр это родитель
go.transform.localPosition = spawnPos / 2; // задали локальную позицию. Вращение применится от родителя.
bulletSpawnPos тоже должен быть дочерним по отношению к персонажу, наверное он прикреплён к руке? Либо самому нужно поворачивать bulletSpawnPos.

Но теперь дочерним пулям будут добавляться трансформации от родителя-персонажа. Если он будет прыгать, то и пули будут прыгать.
Можно отвязать дочерние объекты так:
bulletSpawnPos.transform.DetachChildren();
Ответ написан
Griboks
@Griboks Куратор тега Unity
Вы забыли повернуть bulletSpawnPos.rotation сдвиг спавна spawnPos вместе с самим спавном bulletSpawnPos.position.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы