我可以通过向它添加一个力来拾取并抛出一个物体,它会以正确的方向投掷它。如果这个物体被抛出并且它的速度大于速度Threshold
,它就会开始RotateAround
行星运转良好。
现在我要做的是:
如果我在投掷时对速度大于速度阈值的物体施加一个力,物体将进入轨道,但不是正确的方向,这将是玩家向前的方向。
Example Video demonstrating the problem when I throw the frisbee (object)
这是我的代码:
Vector3 planetDir = planet.transform.position - transform.position;
Vector3 axis = Vector3.Cross(Vector3.Normalize(planetDir), transform.forward);
if (rb.velocity.magnitude * 10 > speedThreshold)
{
rb.isKinematic = true;
isOrbiting = true;
}
if (isOrbiting == true)
{
transform.RotateAround(planet.transform.position, axis, rotationSpeed); //start orbiting
desiredAltitude = (transform.position - planet.transform.position).normalized * radius +
planet.transform.position; //set the altitude
transform.position = desiredAltitude; //move this gameobject to desired altitude
}
答案 0 :(得分:0)
这似乎在transform.forward前面添加了一个负号,所以这个
Vector3 axis = Vector3.Cross(Vector3.Normalize(planetDir),
transform.forward);
到此
Vector3 axis = Vector3.Cross(Vector3.Normalize(planetDir), -
transform.forward);