###前提・実現したいこと
プログラミング初心者です。
Unityでの3Dゲーム開発をしていて、「的に球を投げて当たったら球が静止する」というシステムを作っています。
しかし、その的と球の当たり判定がうまく動作しません。ちなみにPhysicsを使った当たり判定です。
###発生している問題・エラーメッセージ
球を投げる速さが小さいと、球が的に当たると問題なく静止しますが、速さを大きくすると的をすり抜けてある程度飛んで行った後に当たったと判定され、球が静止します。エラーメッセージ等はありません。
###該当のソースコード
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class IgaguriController : MonoBehaviour { 6 7 //このスクリプトをアタッチする球に力を加えるメソッド 8 public void Shoot(Vector3 dir) { GetComponent<Rigidbody>().AddForce(dir); } 9 10 private void OnCollisionEnter(Collision other) 11 { 12 GetComponent<Rigidbody>().isKinematic = true;//球を静止させる 13 Debug.Log("当たった"); 14 } 15 16 void Start () { 17 Shoot(new Vector3(0, 200, 2000));//球を投げる速さ 18 } 19 20 void Update () { 21 22 } 23}
###試したこと
球を投げる速さの、2000となっているところを10000としたところ、球が的をすり抜けたところで静止し、UnityのConsoleウィンドウにも、的をすり抜けてから「当たった」と表示されました。次に値を1000にすると、ちゃんと的に球が触れたときに球は静止しました。どうやら2000近くが、すり抜けるかどうかの境界だとわかりましたが、エラーもないし、書籍に書かれていたコードを丸写ししてこのような現象が起きているので、原因がわかりません。
###補足情報(言語/FW/ツール等のバージョンなど)
Unityのバージョンは2017.3.0です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/31 01:34