2016-04-18 5 views
0

私のゲームでは、ボールはバウンスして決して遅くならないと考えられています。しかし、ボールは徐々に時間の経過とともに減速しています。私はボールオブジェクトとスクリプトのイメージを入れます。ここ は左 enter image description hereユニポンゲームボールの物理速度を遅くする

上のボール特性は、ここに私はそれが勝った理由は分からないので、ボールスクリプト

using UnityEngine; 
using System.Collections; 

public class Ball : MonoBehaviour 
{ 
    public float ballVelocity = 3000; 

    Rigidbody rb; 
    bool isPlay; 
    int randInt; 

    void Awake() 
    { 
     rb = GetComponent<Rigidbody>(); 
     randInt = Random.Range(1,3); 
    } 

    void Update() 
    { 
     if (Input.GetMouseButton(0) && isPlay == false) 
     { 
      transform.parent = null; 
      isPlay = true; 
      rb.isKinematic = false; 
      if (randInt == 1) 
      { 
       rb.AddForce(new Vector3(ballVelocity, ballVelocity, 0)); 
      } 
      if (randInt == 2) 
      { 
       rb.AddForce(new Vector3(-ballVelocity, -ballVelocity, 0)); 
      } 
     } 
    } 
} 

、ここでは、バウンス物理学の画像が enter image description here

であるとされています仕事は、ここに私の物理プロジェクトの設定です enter image description here

+0

['RigidBody.Drag'](http://docs.unity3d.com /ScriptReference/Rigidbody-drag.html)をゼロにしますか? – DavidG

+0

@DavidG私はインスペクタのウィンドウにコードを挿入し、コード内のメソッドを更新して何も変えませんでした – Luke

+0

ボールのバウンシーとそれがどんな打撃を受けているのですか? – DavidG

答えて

1

ランダム化が加えられているために起こっている。それが必要とするのは、反対方向よりも一方向に強くぶつかることだけです。最終的には時間の経過とともにidkが終了しますが、最終的に0の速度で落ち着きます。これを修正するには、ドラッグ係数を削除する必要があります。次に、ボールから現在の速度が何であってもクリアする必要があります。 "rigidbody.velocity = Vector3.zero;"あなたのためにそれを行う必要があります。その後、私は頭が分からないいくつかの数学を使って新しいベロシティを直接生成するか、ボールの以前の状態にもはや依存しない新しい力を加えることができます。私はこれが助けてくれることを願っています。コメントを残して、より良い解決策が見つからないかどうかを見てみましょう:)

関連する問題