Estou com um problema na criação de código para movimentação da câmera... O códio abaixo a câmera segue o personagem perfeitamente, quando eu rotaciono ele com as teclas A e D (através do LookAt(head), em visto que a movimentação está em outro código), agora o LookAt(head) não respeita a rotação dele... O código altera a rotação do objeto HEAD (GameObject vazio), tanto é que eu vejo os valores de Rotation Y alterando. Porém nada acontece com a câmera e se eu coloco a camera como filha de HEAD não obtenho o resultado desejado...
public class CamFollow : MonoBehaviour
{
public Transform head;
public Transform[] pos;
public int id;
public Vector3 speed = Vector3.zero;
public RaycastHit hit;
public float scroll;
private float rotSpeed, rotation;
// Start is called before the first frame update
void Start()
{
rotSpeed = 100;
id = 0;
}
void Update()
{
CameraAdjust();
CameraRotation();
}
// Update is called once per frame
void LateUpdate()
{
transform.LookAt(head);
if (!Physics.Linecast(head.position,pos[id].position))
{
transform.position = Vector3.SmoothDamp(transform.position,pos[id].position, ref speed, 0.1f);
Debug.DrawLine(head.position, pos[id].position);
}
else if (Physics.Linecast(head.position, pos[id].position, out hit))
{
transform.position = Vector3.SmoothDamp(transform.position, hit.point, ref speed, 0.1f);
Debug.DrawLine(head.position, pos[id].position);
}
}
void CameraAdjust()
{
scroll = Input.GetAxis("Mouse ScrollWheel");
if ((Input.GetAxis("Mouse ScrollWheel") < 0) && (id < 2))
{
id++;
}
else if ((Input.GetAxis("Mouse ScrollWheel") > 0) && ((id <= 2) && (id > 0)))
{
id--;
}
}
void CameraRotation()
{
rotation += Input.GetAxis("Mouse X") * rotSpeed;
rotation *= Time.deltaTime;
head.Rotate(0,rotation,0);
}
}
|