Код, который вращает турель, довольно прост:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rotateturret : MonoBehaviour
{
public Transform target;
public Transform partToRotate;
public float turnSpeed = 10f;
private void Update()
{
transform.LookAt(target);
}
}
В этом случае цель вращается вокруг турели с фиксированной скоростью, но произвольно изменяет высоту.
Если этот скрипт RotateTurretесли я прикреплю его к детской части Turret, он будет вращаться и будет смотреть на цель.Как делать LookAt.Это скриншот части башни:
![Turret](https://i.stack.imgur.com/FoOrq.jpg)
И если я прикреплю скрипт к части пилона, он будет медленно вращаться и всегда будет оставаться зацель не будет вращаться достаточно быстро.
Скриншот части пилона:
![Pylon](https://i.stack.imgur.com/NRqLs.jpg)
Мои проблемы: Какая часть башния должен вращаться?Логика гласит: «Пилон», я думаю.
Во-вторых, как рассчитать скорость вращения револьверной головки?Всегда ли она должна быть идеально обращена к цели?Или иногда, если цель движется со случайной скоростью, турель не будет все время стоять на 100%?Какова логика в этом случае?Просто использовать LookAt недостаточно.И я не использую физику, но это еще одна проблема, я думаю.Если и турель, и цель будут использовать физику, но пока не уверены, как сделать логику турели (или я должен назвать ее AI).
Для тестирования я тоже попробовал этот скрипт:
public class Rotateturret : MonoBehaviour
{
public Transform target;
public Transform partToRotate;
public float turnSpeed = 10f;
private void Update()
{
Debug.DrawRay(transform.position, transform.forward, Color.green, 1000);
Vector3 dir = target.position - transform.position;
Quaternion lookRotation = Quaternion.LookRotation(dir);
Vector3 rotation = Quaternion.Lerp(partToRotate.rotation, lookRotation, Time.deltaTime * turnSpeed).eulerAngles;
partToRotate.rotation = Quaternion.Euler(0f, rotation.y, 0f);
}
}
И снова, если я поверну Турель, она будет более точной, но если пилон, то она будет позади цели.А кто сказал, что скорость вращения турели должна быть 10 и 20 или 50 или 1?Думаю, в этом сценарии нет особой логики.
Другое дело, что в будущем я захочу также повернуть Пистолет, чтобы стрелять пулями.Так что скорострельность и когда начинать стрельбу, это еще одна проблема, может быть, это будет другой вопрос, но я думаю, стрельба пулями также имеет отношение к логике вращения башни.