统一3d旋转对象(space.self)对球员

时间:2018-03-12 12:38:45

标签: c# unity3d

我需要你的帮助。 我希望一个物体在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

2 个答案:

答案 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;