поворот в сторону точки пути

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

поворот в сторону точки пути

Сообщение Trifov 20 апр 2021, 17:34

вопрос немного глупенький, но уже 4 часа сижу туплю.
есть корабль который летает от клавиатуры(сторонний ассет). хочу сделать соперника на основе него. для этого вынес управление кораблем игрока в отдельный скрипт и все хорошо работает.
теперь надо сделать управление ботом. сделал ему стрейфы, полет вперед и назад... но туплю, как сделать поворот в сторону точки пути. как принимает корабль управление:
Синтаксис:
Используется csharp
void Update(){
controller.gasInput = Input.GetAxis ("Speed");
controller.streafXInput = Input.GetAxis ("Horisontal");
controller.streafYInput = Input.GetAxis ("Vertical");
controller.pitchInput = Input.GetAxis ("Pitch"); //тангаж
controller.yawInput = Input.GetAxis ("Yaw");//рыскание
}
 

как я понимаю мне надо получить угол между носом и CurrentPoint разложить на тангаж и рыскание и превратить их во float... а далее - отдать в pitchInput и yawInput но чот не поворачивает ни в какую
Trifov
UNец
 
Сообщения: 45
Зарегистрирован: 07 апр 2021, 11:43

Re: поворот в сторону точки пути

Сообщение TeslaGan 20 апр 2021, 23:57

попробуйте https://docs.unity3d.com/ru/current/Scr ... 3.Dot.html
раскладываем пространство на 2 плоскости. далее для каждой плоскости считаем Vector2.Dot
например так:

Синтаксис:
Используется csharp
        Vector2 yawLook = new Vector2(transform.right.x, transform.right.z);
        Vector2 currentPoint2D = new Vector2(currentPoint.x - transform.position.x, currentPoint.z - transform.position.z);
        controler.yawInput = Mathf.Clamp( Vector2.Dot(yawLook,currentPoint2D),-1f,1f);
 
TeslaGan
UNITрон
 
Сообщения: 315
Зарегистрирован: 01 авг 2015, 18:00

Re: поворот в сторону точки пути

Сообщение Trifov 21 апр 2021, 10:17

TeslaGan писал(а):попробуйте https://docs.unity3d.com/ru/current/Scr ... 3.Dot.html
раскладываем пространство на 2 плоскости. далее для каждой плоскости считаем Vector2.Dot
например так:

Синтаксис:
Используется csharp
        Vector2 yawLook = new Vector2(transform.right.x, transform.right.z);
        Vector2 currentPoint2D = new Vector2(currentPoint.x - transform.position.x, currentPoint.z - transform.position.z);
        controler.yawInput = Mathf.Clamp( Vector2.Dot(yawLook,currentPoint2D),-1f,1f);
 


спасибо. то что надо
Trifov
UNец
 
Сообщения: 45
Зарегистрирован: 07 апр 2021, 11:43


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 22