代码之家  ›  专栏  ›  技术社区  ›  Loui Augst

仅在局部X轴上将游戏对象指向另一个对象

  •  0
  • Loui Augst  · 技术社区  · 2 年前

    我想让一个游戏对象只指向本地X轴上的另一个。

             void FixedUpdate()
             {
                 if(started){
                     Vector3 targetPosition = target.position;
                     Vector3 direction = Vector3.ProjectOnPlane(targetPosition - transform.position, transform.right);
                     Quaternion lookRot = Quaternion.LookRotation(direction, transform.right);
                     transform.rotation = Quaternion.RotateTowards(transform.rotation, lookRot, Time.fixedDeltaTime * 45);
                 }
    

    在它工作的y轴上 使改变向上的 而不是 使改变正当 ,但在x轴上,游戏对象只会围绕z轴永久旋转。

    0 回复  |  直到 2 年前
        1
  •  1
  •   zyapguy    2 年前

    你可以这样做:

    Vector3 beforeRot = transform.eulerAngles;
    transform.LookAt(gameObjectToLookAt.transform);
    transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, beforeRot.y, beforeRot.z);
    
    1. 这将在查看对象之前记录位置。
    2. 让它看着这个物体。
    3. 将旋转重置回原始状态(X旋转除外)