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

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.