首页 > 解决方案 > 如何围绕单个轴旋转 3D 对象?

问题描述

我有一个 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 仅在一个轴上

还有其他选择吗?

标签: c#unity3d

解决方案


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

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

如果您没有spaceship在 XY 计划中移动,那么您将需要为worldUp属性提供不同的值。文档


推荐阅读