我有一个附有空物体的球体,物体位于行星表面,火箭从这个空物体发射。球体在旋转。 我的火箭可以从它的实例中心以螺旋轨迹飞行。我无法解决的问题是火箭的轨迹与行星的旋转无关。 这是火箭的Update()函数:
void Update () {
angle += speed * Time.deltaTime;
x = Mathf.Cos (angle) * radius;
z = Mathf.Sin (angle) * radius;
rb.velocity = new Vector3(x,0.0f,z);
radius += stepOfRadius;
}
答案 0 :(得分:0)
我对unity3d了解不多,但x和z似乎是位置的组成部分,而不是速度。
如果可能,请尝试替换
rb.velocity = new Vector3(x,0.0f,z);
通过
rb.position = new Vector3(x,0.0f,z);
或
Vector3 position(x,0.0f,z);
rb.MovePosition(position);
否则,您可以通过定义此速度分量来保持rb.velocity
(我认为speed
是一个角速度):
x = (stepOfRadius/Time.deltaTime) * Mathf.Cos(angle) - radius * speed * Mathf.Sin(angle);
z = (stepOfRadius/Time.deltaTime) * Mathf.Sin(angle) + radius * speed * Mathf.Cos(angle);