Изменить угол снаряда - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь повысить точность своей игры. В настоящее время мой игрок всегда будет стрелять прямо вперед (который указывает на курсор мыши). Я хотел бы сместить этот угол стрельбы на x градусов.

Мой сценарий стрельбы в настоящее время выглядит так:

nextFire = Time.time + bulletConfig.TimeBetweenShots;
var offset = new Vector3(0, 0, 0);
var grid = GameObject.FindObjectOfType<Grid>();
var proj = Instantiate(projectile, transform.position, Quaternion.identity, grid.transform);
proj.transform.position = transform.position + offset;
proj.transform.rotation = transform.rotation;
print(proj.transform.rotation);

var controller = proj.GetComponent<BulletController>();
if (controller != null)
{
    controller.Fire(bulletConfig);
}

Destroy(proj, bulletConfig.DestroyTime);

Суть моей проблемы в том, что я не знаю, как добавить градусы к вектору3 без какой-либо сложной тригонометрии.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 10 марта 2019

Как указано в комментарии:

Документация для Transform.rotate состояния: "Чтобы повернуть объект, используйте Transform.Rotate."

Изменение вашего примера это будет выглядеть так:

// -- snipped for brevity
var proj = Instantiate(projectile, transform.position, Quaternion.identity, grid.transform);
proj.transform.position = transform.position + offset;
proj.transform.rotation = transform.rotation;
// Using the second overload of Transform.Rotate
float exampleOffsetAngle = 1.0f;
proj.transform.Rotate(exampleOffsetAngle, 0.0f, 0.0f);
print(proj.transform.rotation);
// -- snipped for brevity

Дополнительные примеры и использование других перегрузок см. В официальных документах: https://docs.unity3d.com/ScriptReference/Transform.Rotate.html

0 голосов
/ 09 марта 2019
Float degrees = 5;
Quaternion q = Quaternion.AngleAxis(Vector3.right, degrees);
proj.transform.rotation = q * proj.transform.rotation;
// Alternatively, if you have a vector vecToRotate:
vecToRotate = q * vecToRotate;

Это повысит его на 5 градусов. Используйте -5 для пуха. Используйте что-то кроме Vector3.right для других направлений.

0 голосов
/ 09 марта 2019

Тригонометрия не совсем сложна, особенно если у вас есть объект преобразования, который может выполнить вычисления за вас.«Добавление градусов» означает вращение трансформации снаряда с помощью функции Поворот .

...