我在行星周围产生了一些宇宙飞船。我想让他们在这个星球上飞翔。
我也希望将它们旋转到它们飞入的方向。因为目前,预制件只是初始旋转。
我不知道,browserify
是否适合解决此问题。 transform.RotateAround();
无效。
所以我的问题是,我怎样才能让宇宙飞船绕行星飞行并旋转到它们飞行的方向?
到目前为止,这是我的代码:
Transform.Rotate()
答案 0 :(得分:1)
移动航天器
目前,您似乎无法向Transform.RotateAround()
提供正确的参数。具体来说,第二个参数应该是执行旋转的轴,在这种情况下应该是垂直于所需flyDirection
的矢量和船舶/行星之间的矢量,而不是flyDirection
本身。我们可以使用Vector3.Cross()
void Update()
{
// Calculating vector perpendicular to flyDirection and vector between ship/planet
Vector3 rotationAxis = Vector3.Cross(flyDirection, transform.position - planet.position);
transform.RotateAround(planet.position, rotationAxis, speed * Time.deltaTime);
// ...
}
旋转航天器
将对象的旋转设置为面向任意方向的快捷方式是将值分配给其transform.forward
属性。在您的情况下,您只需提供flyDirection
作为要使用的新forward
向量:
void Update()
{
// Calculating vector perpendicular to flyDirection and vector between ship/planet
Vector3 rotationAxis = Vector3.Cross(flyDirection, transform.position - planet.position);
transform.RotateAround(planet.position, rotationAxis, speed * Time.deltaTime);
// Setting spacecraft to face flyDirection
transform.forward = flyDirection;
}
如果您需要特定的四元数值,或者需要航天器transform.up
始终指向特定方向(例如,法线指向行星表面),请考虑使用{ {3}}设置轮换。
希望这有帮助!如果您有任何问题,请告诉我。