【问题标题】:How to rotate a 3D object around a single axis?如何围绕单个轴旋转 3D 对象?
【发布时间】:2021-06-28 01:34:14
【问题描述】:

我有一个 3D 游戏对象,我想在垂直平面上从 A 移动到 B。我整理了运动部分:

public Vector3 start;
public Vector3 end;
public GameObject spaceship;
bool flying;

void OnStart(){

    spaceship.transform.position = start;
    flying = false;
}

void Update(){

    if (flying)
        MovingSpaceship();
}

void MovingSpaceship(){

    if (spaceship.transform.position != end)
    {
        spaceship.transform.position = Vector3.MoveTowards(spaceship.transform.position, end, speed * Time.deltaTime);
    }
}

问题是我希望游戏对象指向目的地。我在这篇文章中找到了答案,但是给我不想旋转的轴赋予 0 值对我不起作用:

Unity transform.LookAt in only one axis

还有其他选择吗?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    假设您在 XY 平面中移动游戏对象,Z 为您未修改的深度,那么您可以将其放置在代码中的某个位置:

    spaceship.transform.LookAt(end, Vector3.back); 
    

    如果您没有在 XY 计划中移动 spaceship,那么您需要为 worldUp 属性赋予不同的值。 Doc

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多