GameObject rotacionar suavemente para a posição do Mouse na Unity 3D

Vamos mover um Turret para a posição do Mouse no espaço 3D suavemente através da classe Quaternion.

Vamos criar um exemplo prático e que faz parte do “mundo real”, que nada mais é do que um GameObject olhar para a posição do Mouse. Para esse exemplo, vamos utilizar o método RayCast e alguns outros da classe Quaternion.

Primeiramente precisamos entender o que será criado antes de começar a programar qualquer coisa, sendo assim, organizamos os GameObject em objetos vazios. Criamos nosso script que lança um raio para a posição do Mouse, por fim, utilizando o método LookRotation, obtemos a rotação que nosso GameObject precisa.

Confira nossa videoaula abaixo e logo após, você pode consultar o código utilizado durante a aula.

using UnityEngine;

public class TurretMouseLook : MonoBehaviour
{

	public Transform turret;
	public float velocity = 5.0f;

	public bool freezyY = true;

	private Ray ray;
	private RaycastHit hit;

	private void Update()
	{
		ray = Camera.main.ScreenPointToRay(Input.mousePosition);

		if (!Physics.Raycast(ray, out hit))
			return;

		Vector3 pos = turret.position - hit.point;

		if (freezyY)
			pos.y = 0;

		Quaternion rot = Quaternion.LookRotation(pos);

		turret.rotation = Quaternion.Lerp(turret.rotation, rot, velocity * Time.deltaTime);
	}
}

Conheca mais sobre nosso curso em: https://academy.satellasoft.com/course/introducao-a-unity-3d