2017-04-14 24 views
0

私は投げなければならないボールがあるゲームを開発しています。それは他のボールと衝突することができなければなりません(私はデモのために10を持っています)。今、衝突後、打撃を受けたボールは連続的に移動して停止していません。foreachループが一部のゲームオブジェクトで正しく動作しない

この問題の解決方法は、しばらくisKinematicを有効にしてから無効にすることです。

GameObject[] marbles; 
marbles = GameObject.FindGameObjectsWithTag ("Exit"); 
foreach (GameObject x in marbles) { 
    x.GetComponent<Rigidbody>().isKinematic = true; 
} 

私の問題は、これが部分的にオブジェクトのみを有効にすることです。いくつかのオブジェクトを有効にし、残りのGameObjectを無効にします。このコードの問題は何ですか?

私の上司は、すべてのボールにスクリプトを入れて、同じ方法でボールを止めるように言いましたが(isKinematicは当分の間真です)、私はあまりにも多くを使用するとゲームのfpsを下げると思います各ゲームオブジェクト上の1つのスクリプトのインスタンス。どのアプローチが良いですか?その後、

連続的に移動すると停止しませhittedボールを衝突した後になるような問題のために私の解決策は、いつかisKinematicを有効にすることであり、

それを無効に私はいくつか持っている:あなたの文を1として

+0

これらのボールはゲーム中にインスタンス化されているのですか、それともそれらをシーン内に設定しましたか? – CNuts

答えて

1

  • 決して動かないものに材料を(摩擦値付きで)追加しようとしましたか?止まる?

これは、ボールの速度を減少させるのに役立ち、摩擦値に基づいてしばらくしてボールを止めることになります。

  • また、物理エンジンによって制御されるボールの動きを許可するか、衝突イベントでこれらの移動するオブジェクトに力を加えましたか?

移動するボールの速度を制御していて、速度が常にUpdateのように更新されている場合、それは決して停止しません。物理学者が移動するボールの速度、方向、および移動時間を判断させます。

+0

ありがとうございます!最初の弾丸から、私はあなたが物理材料について言ったと思う、私はすでにそれを追加して、それのガラスのプロパティを取得します。私はそうではないと私は間違っていると思います。 0.94 .. – Badshah

+0

摩擦力に関しては、abput physics engine .. – Badshah

+0

を教えてください。どの方向でも摩擦を制御する方法は、このビデオをご覧ください。https://unity3d.com/learn/tutorials/topics/物理/物理材料 物理エンジンについて私は、あなたがゲームオブジェクト(http://answers.unity3d.com/questions/636566/addforce-with-2d-character.html)に力を加える/速度を加えることを意味します更新の変形、適用された力は物理効果によって処理されますが、このような更新の変形(http://stackoverflow.com/questions/22467674/move-simple-object-in-unity-2d)はいつ停止するか分かりません定義しない限り。 – NeverHopeless

関連する問題