上から落ちてくる障害物を避けるゲームを制作中のお話。
作っている本人は画面外に出ないのが当たり前なので全く気にしておりませんでした。
しかし、ふと気づいてしまったのです。
このままだと画面外を飛び出して永遠の彼方へ行けてしまうと。。。
Mathf.Clampを使ってみた
キャラクターのx座標の延長線上にオブジェクトを配置してColliderをつけて画面外に出ないようにすることも試してみました。(キャラクターは左右にしか動けません。)
きっとできないことはないのでしょうが私の今の知識ではできませんでした。
どうしたもんかなぁ〜と方法を探してやっと見つけました。
↓ご参考にさせていただいたサイト
http://www.clrmemory.com/unity/move-restrict-mathf-clamp/
Mathf.Clampは制限したオブジェクトの範囲を制限できるコード。
Mathf.Clamp(制限したいオブジェクトの座標,座標の最小値,座標の最大値)
今回はx座標だけを制限したいので
player.transform.position = new Vector3(Mathf.Clamp(player.transform.position.x,leftWall.transform.position.x,rightWall.transform.position.x),y,z);
としました。
これで実行してみると。。。
ちゃんと画面内だけに制限できました。
まとめ
Inspector上から何でも出来ると思っておりました。
その固定概念にとらわれていたため、何時間も費やしてしまいました。
やはり視野を広く持つことは大切だなと改めて気づかされました。
参考にさせていただいたサイトを上に載せましたが、x座標、y座標どちらも制限するやり方が載っておりますのでy座標も制限したいという方はサイトへ。