2017-04-02 6 views
0

球体をある位置から別の位置にジャンプさせたいが、後でそれを翻訳したくない。私はそれを行う方法を理解することはできません。ここに私のコードです:衝突直後に剛体の動きや回転を停止する

void Update() 
{ 
    if (!thrown && ((Input.touchCount > 0 
    && Input.GetTouch(0).phase == TouchPhase.Ended) 
    || Input.GetMouseButtonDown(0))) 
    { 
     rb.isKinematic = false; 
     rb.AddForce(new Vector3(0.0f, 15.0f, 5.0f)); 
     thrown = true; 
    } 
} 
+0

「翻訳する」とはどういう意味ですか?ボールをどこかに翻訳するコードがありますか?その場合は、それを – dogiordano

+0

に追加してください。いいえ、AddForceが翻訳を行っています。 – solo365

+0

私がよく理解すれば、ボールが地面に触れた直後にボールを止めたいですか? – Andromelus

答えて

2

コリソンの直後にオブジェクトを停止させる方法はたくさんあります。

方法1:あなたはコリソンを検出したときに0Rigidbody速度を設定

私はあなたに二つの方法を提供します。

オブジェクトも回転している場合は、angularVelocity0に設定してください。

void OnCollisionEnter(Collision collision) 
{ 
    if (collision.gameObject.CompareTag("Player")) 
    { 
     Rigidbody rbdy = collision.gameObject.GetComponent<Rigidbody>(); 

     //Stop Moving/Translating 
     rbdy.velocity = Vector3.zero; 

     //Stop rotating 
     rbdy.angularVelocity = Vector3.zero; 
    } 
} 

方法2

使用フィジック材質コリソンの間の摩擦の量を制御します。

ゴーに資産>>フィジック材質

変更に0から弾みを作成します。

変更値にダイナミック静的摩擦は等しい以上以下1

enter image description here

その後、あなたのColliderMaterialスロットに取り付けます。

関連する問題