2017-10-01 17 views
0

オブジェクトをピックアップしてスローすると、プレイヤーが向いている方向にスローさせることができます。このオブジェクトがスローされ、速度が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

はこのtransform.forwardの前に負の符号を追加した仕事に思えたので、この

Vector3 axis = Vector3.Cross(Vector3.Normalize(planetDir), - 
transform.forward); 
するために、この

 Vector3 axis = Vector3.Cross(Vector3.Normalize(planetDir), 
transform.forward); 

関連する問題