2016-08-27 4 views
1

私は掴んだオブジェクトを投げるためのスクリプトを作ったが、それを作る方法はわからないオブジェクトは前方だけでなく、カメラの頂角に応じて起動されます。 TransformDirectionにどのようなパラメタを付けるべきですか?ここではあなたのアカウントに、カメラのX回転を取るしたいと思うのコードカメラの垂直角度に合わせてオブジェクトを投げることはできません.video = transform.TransformDirection(Vector3.forward)

void throwObject(float pushForce){ 
     carrying = false; 
     carriedObject.GetComponent<Rigidbody>().velocity = transform.TransformDirection(Vector3.forward * pushForce); 
     carriedObject.gameObject.GetComponent<Rigidbody>().useGravity = true;   
     carriedObject = null; 
    } 

答えて

0

です。だから、何かのように:まず

carriedObject.GetComponent<Rigidbody>().AddForce(
    (Vector3.forward * pushForce) + (Vector3.up * 
    -Camera.main.transform.rotation.eulerAngles.x)); 

、これがどのように動作するかを:Xが、ほとんどの場合、カメラが見ることができるされた軸であるべき「上下」。そうでない場合は、カメラを回転させて上下に検索する軸に変更します。カメラのX回転を確認することによって、角度を取得します。デフォルトでは、カメラの正の回転が実際に見下ろしているので、それを負の値にします。また、単にあなたが任意の回転でできるようにtransform.TransformDirection()文で

(Vector3.forward * pushForce) + (Vector3.up * 
-Camera.main.transform.rotation.eulerAngles.x) 

をカプセル化することができます。それは必要ではないかもしれませんが、私はあまりよく分かりません。

第2に、直接Rigidbody.velocityを設定するよりもRigidbody.AddForce()を使用することをお勧めします。

私はこのことを願っていますが、あなたの答えのために:)

+0

おかげで多くのことをあなたを助けたが、今のオブジェクトがCamera.mainの符号に応じて上下に直接飛ぶ...、およびzに移動を開始します地面にあるときの方向。私はこれらのパラメータのさまざまな組み合わせを試してみましたが、残念ながらそれが欲しいようには働きたくありません –

+0

その後、私は 'AddForce()'から 'velocity'に戻ることを試みます。私はそのコンセプトが正しいと思っています。それを「適用する」方法については確かではありません。これが最初の試行ではうまくいかなかったことを申し訳ありません。 –

+0

私は速度で試しましたが、問題は投げの軌道が固定されていることです。私は画面の中心から真っ直ぐに物を投げたい。今は一定の角度で投げられているので、頭のすぐ上に打つことはできません。ここでは、完全なコードhttp://pastebin.com/zyYiXNE3そしてもう一度、あなたのサポートのためにありがとう –

関連する問題