ミニマムブロック

頭の中でつながるまで

2Dシューティング #4

敵を作成する

①共通する部分のスクリプトを、SpaceShip.csという形で作る。

SpaceShip.csで定義しているのは、移動処理と攻撃処理の2つ。

プレイヤーの場合は、SpaceShip + 操作処理。

エネミーの場合は、SpaceShip + 移動処理。

②Transform.up

transform.upを使えば、簡単にローカル座標にアクセスができる。

Vector3.upはワールド座標で上なので、キャラクタが斜めを向いていても上に進む。

transform.upであれば、キャラクタが斜めなら斜め上の、キャラクタにとって上へ進む。

 

当たり判定をつけよう

当たり判定には、colliderを使う。

collider同士は通常、衝突時に反発するが、

IsColliderをつければ、すり抜けるようになる。

 

不要になったオブジェクトを削除する仕組み

playerにonCollisionEnterをつけて

destroyZoneにonCollisionExitをつける

playerとdestroyZoneでトリガーが起こり、2つが破壊されて敵と敵の弾は残る。

→レイヤーを使用しよう

 

レイヤーで当たり判定の制御

1: プレイヤーの弾とプレイヤーは当たらない

2: エネミーの弾とエネミーは当たらない

3: プレイヤーの弾とエネミーの弾は当たらない

4: プレイヤーの弾同士は当たらない

5: エネミーの弾同士は当たらない

6: エネミー同士は当たらない

7: プレイヤー同士は当たらない

これらの条件を満たすためにはレイヤーを使うのが楽。

Edit, layers, userLayerに今回使うレイヤーを追加する。

それぞれのレイヤーが衝突する、しないはproject seddtingのlayerタブ下で管理できる。

 

 

スクリプトでcollisionを制御する方法

gameObjectでレイヤーを取得できる

取得したレイヤーは数値情報を持っている

player.csを修正する

 

playerBulletゲームオブジェクトが残るので、

時間経過で削除するように修正

startメソッドの中にdestroy(gameObject, lifeTime)とする。

lifeTime経過後、gameObjectを破壊する。