Unity. Поворот объекта по направлению курсора мышки только вверх/вниз
У меня есть танк, у которого есть - башня и сама пушка на башне (как дочерний объект). При наведении курсора мыши в некоторую область на сцене -> башня поворачивает в сторону курсора мышки и пушка тоже соответственно следует за ней, так как дочерний объект.
В общем надо сделать при наведении мыши на точку в сцене:
- чтобы башня крутилась вокруг оси (Y) по направлению указателя мышки. (эту функцую реализовал в скрипте ниже)
а сама пушка только вверх/вниз в зависимости на какую точку на объекте на сцене ты указал мышкой.
Либо 2-й вариант мне сейчас пришел в голову -> пушка поворачивает по всем плоскостям следуя за указателем мыши (c определенной скоростью _towerSpeed), а башня в зависимости от пушки -> только крутится по оси Y. Но стоит помнить, что пушка - дочерний объект башни.
public float _towerSpeed
public Transform _tower // башня
public Transform _shootPoint // пушка (дочерний объект башни)
private void TowerRotation() // сдeлать так, чтоб башня крутилась вокруг оси, а пушка вверх-вниз
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo))
{
Vector3 ShootPointLookDir = hitInfo.point - _shootPoint.position;
var rotation = Quaternion.LookRotation(hitInfo.point - _tower.position);
var targetRotation = Quaternion.RotateTowards(_tower.transform.rotation, rotation, _towerSpeed);
_tower.rotation = new Quaternion(0, targetRotation.y, 0, targetRotation.w); // движение башни вокруг Y
// необходимо движение пушки вверх/вниз по указателю мышки
}
}