コンテンツへスキップ

【Unity チュートリアル】レッスン3:③ 敵に当たってもノーダメージにする


概要

プレイヤーと敵の当たり判定をなくします。無敵状態になって、ゲームをクリアしましょう。

当たり判定のことを collision(コリジョン)といいます。プログラムの中にもよく出てくるので覚えておきましょう。

はじめに:学習用プロジェクトを開く

(下図の左側)Unity Hub を起動します。次に、(下図右側の赤枠)学習用のプロジェクトをクリックします。

install-unityB1
unity-hub_project

STEP1:「EnemyController」ファイルを開く

ヒエラルキーから「Enemy」を選択します。インスペクター内の「Enemy Controller(スクリプト)」⇒「EnemyController」をダブルクリックします。

1

STEP2:当たり判定をしているプログラムの場所を確認する

OnCollisionEnter2D というメソッドは、何かと当たったときに発生するイベントです。敵は、地面に当たったり、プレイヤーに当たったり、色々なものと接触します。そのため、プレイヤーと当たったかどうかを確かめる必要があります。

36行目の「collision.gameObject.GetComponent」は、敵がプレイヤーと当たったかどうかを取得するメソッドです。もしプレイヤーと当たっていれば、var player という変数にプレイヤーの情報がセットされます。プレイヤーと当たっていない場合は、var player の変数の中身は何もセットされません。ヌル(null)です。

37行目の「if 文」で、var player が null かどうか調べています。もし null でなければ、プレイヤーと当たったということなのでダメージを受けるプログラムが実行されます(39~41行目)。

2

STEP3:ダメージを受けるプログラムが実行されないように変更する

3

上図の赤枠の「if 文」のプログラムを、下図のように変更しましょう。「//」は、その行のプログラムをコメントアウト(実行させない)するために使います。「if (false)」とすることで、if 文の中には絶対に入らないようになります。

//if (player != null)
if(false)

STEP5:Unity に戻り、ゲームを実行してみる

無敵状態になったはずです。
Unity に戻り、「▶(実行)」ボタンをクリックしてゲームで遊んでみましょう。

7

STEP6:次に進む

レッスン3では、プレイヤーの移動速度や色、ダメージを無効化する方法を学びました。ただし、プログラミングについてはもっと学習する必要があります。

値型の変数、参照型の変数、メソッド、if 文や null、などです。レッスン3では出てきませんでしたが、オブジェクト指向という考え方とそれを実現しているクラスや継承という仕組みについても学ぶ必要があります。

そこで次は、プログラミング(C#)について学びます。ここでプログラミングの力をつけて、改めて Unity で作品を作ってみましょう。きっと違った景色が見えるはずです。