我需要你的帮助。 我希望一个物体在Y轴(space.self)向玩家位置旋转。 我已经尝试过这个代码,它可以工作,但我认为它有一个错误,因为对象不断缓慢改变位置。
public Transform _Playertrs;
public float RotationSpeed = 10f;
private Quaternion _LookRotation;
private Vector3 _direction;
private bool Patroling = true;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
_direction = (_Playertrs.position - transform.position).normalized;
_LookRotation = Quaternion.LookRotation(_direction);
transform.rotation = Quaternion.Slerp(transform.rotation, _LookRotation, Time.deltaTime * RotationSpeed);
}
谢谢你们的答案,旋转工作现在完美,但问题是物体保持从其位置移动,即使我没有任何移动代码,观看视频了解请 https://www.youtube.com/watch?v=Gys5xYQ5psw&feature=youtu.be
答案 0 :(得分:2)
如果您希望它是瞬时的,请替换
transform.rotation = Quaternion.Slerp(transform.rotation, _LookRotation, Time.deltaTime * RotationSpeed);
通过
transform.rotation = _LookRotation;
Slerp函数给出了旋转之间的中间点以产生平滑效果。
答案 1 :(得分:1)
此处,这取自Unity Quaternion.LookRotation()官方文档,您只需应用_LookRotation
的四元数并将其应用于所需的transform.rotation
{{1} }}
transform.rotation = _LookRotation;