にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20221224103753

Unityで学ぶプログラミング (初心者)寸止めゲームを作ろう(4)床への衝突検知

上から落ちてくるブロックを床の上で寸止めして、ギリギリを
狙うゲーム4回目です。

応用すれば、いろんなゲームに使えそうな技術が多くあるので、
是非勉強してみてください。

初心者向きとは書いていますが、ざっくりなところもあります。
ご容赦ください。わからなければ、質問してくださいね。
(TwitterとかでもOKですよ)

早速、プログラムを作成して(C#)
ObjectAにObjCというプログラムをアタッチします。

f:id:koharuwest:20201123224113p:plain
アタッチされているかどうかは

f:id:koharuwest:20201123224507p:plain

インスペクタにもありますので、確認しましょう。

今日は「地面にぶつかったらGameDirectorに報告」させます。


//GameDirector格納用
GameObject GD;
//GameC格納用
GameC GDC;
 
void Start()
{
//GameDirectorを取得
GD=GameObject.Find("GameDirector");
//こうすると、GameCのプログラムに関与できる
GDC=GD.GetComponent<GameC>();
}
やっていることは、前回と同じなのですが。
GameDIrecctorに報告するため、GameDrictorを発見し、
さらにアタッチされているGameCも見つけておきます。

そうすることで、GameCの中にいるmissFlagという変
数にこのプログラムからアクセスできるようにしています。
//床と衝突したら
void OnCollisionEnter(Collision col){
if(col.gameObject.name=="Field"){
//フラグを返してあげる
GDC.missFlag=1;
}
}

そして、衝突した場合はその対象のデータをcolに入れて返してく
るのですが、その中の名前はFieldだった場合、missFlagを1にし
て返します。

これで、途中でストップをかけれずに衝突したことを
GameDirectorに報告できます。

次回は、これを使って、GameCを編集していきます。

・衝突したら、どういう処理を行うか

・そして、元の位置に戻して再スタート!

まで行ってみたいと思います。

それではよきプログラミングライフを!
またね。