Nanashi-soft○プログラマ専用○Unityでゲーム開発○
◇Unityでゲーム開発 -JavaScriptで当たり判定-
ゲームオブジェクト同士の衝突を検知する方法です
Planeの上空に Cubeを置いて,cubeのスクリプトに落下するようなコードを記述する
function Update () {
transform.Translate(0, -1 * Time.deltaTime, 0);
}
そうすると,Cubeは Planeを突き抜けて移動していってしまう
これを,衝突するようにしたい場合は,
・Hierarchyで Cubeを選択
・メニューの Component→Physics→Rigidbodyを選択
そうすると,Inspectorに Rigidbodyが追加される
この Rigidbodyの1つのポイントが Use Gravityプロパティです
・Use Gravityにチェックを入れると自動的に落下するので,スクリプトでの移動記述が不要になる
・スクリプトでY軸移動させるなら,Use Gravityのチェックを外す
・スクリプトでの移動と,Use Gravityの落下計算はマージされる
例えば,Use Gravityにチェックを入れて,X軸方向に動かす記述をした場合,
横に移動しながら落下して,Plane上をそのまま這っていきます
function Update () {
transform.Translate(-1 * Time.deltaTime, 0, 0);
}
もし Cubeと Planeとうまく衝突しなかった場合に見直す点
・Cubeの Inspector→Rigifbody→Is Kinematicがチェックされている
・Cubeの Inspector→Box Colider→Is Triggerがチェックされている
・Planeの Inspector→Mesh Colider→Is Triggerがチェックされている
・Planeの Inspector→Mesh Colider→Convexがチェックされている
デフォルトはきちんと設定されているので,わからないのに余計なとこ触るな! と言う話です('-'*)
もう1つの Rigidbodのポイントは,コールバックメソッドの追加です
・衝突した時にコールバックされる
衝突した時に1回だけ来ます(ここがポイント)
function OnCollisionEnter(col : Collision){
//衝突判定用の処理をする
if(col.gameObject.name == "「ゲームオブジェクト名」"){
//それと衝突した
}
}
これで,衝突したら○○する。という記述が可能になります
○TOP○プログラマ専用○Unityでゲーム開発○