Unity初心者がつまずいたところ
2Dと3Dの違いで
アプリを作ろうとWebでコード探していると「あ、これっぽい」と割とすぐに探してこれるので、コピーして使ってみるんだけども、どうも意図した通りに動かないってことがしばしばある。
なんでかっていうと、3D用のコードだから
当方2Dのアプリを作ろうとしているのに、探して使っているのが3D用っていう。
そもそも、やりはじめた当時2Dと3Dで関数とか違うってことを知らなかった(無知)
それ故に、「Unity 当たり判定」と検索してでてきた結果を参照して「あら〜?動かん」となってました。エラーもでないのでちょっと困った。(そもそも実行されたないから)
以下のヤツに私は引っかかったので忘れないようにメモ。というか、3Dの方だけ見ちゃうとそれっぽくみえるから困る。3Dって明示してあればな(2Dがあると知らない自分のせいだが)
2D用は「〜2D」って明示してある。
<当たり判定>
状態 | 2D | 3D |
---|---|---|
衝突した | OnCollisionEnter2D | OnCollisionEnter |
離れた | OnCollisionExit2D | OnCollisionExit |
衝突中 | OnCollisionStay2D | OnCollisionStay |
物体同士がぶつかった場合に使う。(例:壁にボールが当たる)
<すり抜け判定>
状態 | 2D | 3D |
---|---|---|
すり抜けた | OnTriggerEnter2D | OnTriggerEnter |
離れた | OnTriggerExit2D | OnTriggerExit |
すり抜け中 | OnTriggerStay2D | OnTriggerStay |
(例:ゴールフラッグを触った)
Physics Material 2Dが見当たらない
ボールが当たったらバウンドさせる、みたいな物理特性マテリアルを設定したい。「ふむふむ、Physic Materialなるものを設定すればいいのか。」「2Dの方ね」(2Dは別ってことを学習した)とCreateの中を探してみるもパッとみない。
「そこかよ(笑)」ってとこにいたのでメモ。(あ〜、言われてみれば感が否めない)
場所はこちら↓
Create > 2D > Physics Material 2D
尚、3Dは
Create > Physic Material
今気づいたけど、2Dの方はPhysicsなのね。
ちなみに、Material とかいう別物もいる。こちらはテクスチャとか設定するやつ。
Create > Material
オブジェクトの設定でよくやるミス
- オブジェクト(当たり判定あり)が奈落に消えていく
→RigidBodyのBody TypeをStaticに変更していない - 当たり判定がなんか変
→Colliderの設定が適切でない(丸でいいところを四角でやってたり等々)