c# - 如何围绕单个轴旋转 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 值对我不起作用:
还有其他选择吗?
解决方案
假设您在 XY 平面中移动游戏对象,Z 是您未修改的深度,那么您可以将其放置在代码中的某个位置:
spaceship.transform.LookAt(end, Vector3.back);
如果您没有spaceship
在 XY 计划中移动,那么您将需要为worldUp
属性提供不同的值。文档
推荐阅读
- r - 有没有办法在不提及数据框的情况下过滤 geom_point() 中的数据?
- javascript - 如何从时区的tz名称到UTC的时区偏移量
- c# - C# 反射类型作为类型参数
- java - Java中的miniMax算法
- vba - VBA 从存储在动态范围中的值过滤数据透视表中的值
- r - 按组接收中位时间
- python - 是否有一个 numpy 函数可以用另一个数组的相同部分替换一个数组
- android - 为什么 MediatorLiveData 没有观察到两个不同的来源?
- javascript - 将脚本加载到 javascript
- excel - 将多个工作簿中的数据收集到主工作簿中 - 来自单元格的路径