弾に当たった敵を消す

記事作成 2019年6月
PlayMaker 1.9.0 / Unity 2018.2.6f1

弾に当たったオブジェクトを消してみます。
弾を発射する 1 で作った弾を改変して使用します。発射装置はそのまま。
操作キャラは 十字キーでキャラクターを操作する のカプセルです。 

----------------------------------------------
[Add Force] で力を加えていた弾です。作成してプレハブ化している場合は
シーン上にドロップして、プレハブとの接続を切ります。

プレハブのままでは、新たな子オブジェクト等を付け加えることができません。
(すでに付随しているFSMコンポーネント(状態遷移)は、プレハブ状態のままで編集
できます。)


オブジェクトを選択した状態で、図のようにすれば、プレハブとの接続を切ることができます。
* 追記 2020 / 09 /20
(Unity2019からは、プレハブを選択することで、子オブジェクトを付け加えたり、
付随しているPlayMakerの状態遷移を変更することができます。参考 プレハブ内のFSM編集

----------------------------------------------
次に、空オブジェクトを作成し、弾の子オブジェとします。


その空オブジェクトに [Sphere Collider] を付け、トリガとします。


トリガになるコライダの大きさは、本体より少し大きめにします。

----------------------------------------------
この子オブジェに状態遷移を設定し、ノード、アクションをこのように。

[Trigger Event] でTag 「t 敵」を付けられたオブジェクトに接触したとき、
そのオブジェクトを、変数 [gobj 当たった敵オブジェ] に格納し、次へ遷移します。


[gobj 当たった敵オブジェ] はゲームオブジェクト変数です。


次の状態「敵を消す」で、その変数に格納されたオブジェクトを消します。
[Destroy Object]

----------------------------------------------

ということで、敵となるオブジェクトには、Tag「t 敵」が付いていなければなりません。

----------------------------------------------
Cubeには、Tagと一応 Rigidbody も。
敵キャラは、もちろん、用意したモデルでも構いません。

----------------------------------------------
このTag 付き 敵Cube は次で使いたいと思うので、できればプレハブにしておいてください。

----------------------------------------------

ここで紹介したやり方はあくまで一例で、敵側で判定を取ることも含めて、様々な方法
があるはずです。弾が当たるものが敵だけでなく、他にもある場合は(アイテムなど)
[Trigger Event] アクションを別オブジェ用に並べるのもありですが、当たるものすべてを
「t 接触物」などとして、その子オブジェに識別用のTagをつけることもできます。
([Get Random Child ] [Game Object Tag Switch] などで取得)

----------------------------------------------

ここまでやってくると、「敵に当たったら弾も消す」とか「敵に当たったときに
パーティクルエフェクトを生成する」…などのアイデアも工夫次第でできると思います。

動画は、目標を追いかけるオブジェクト で作成した追いかけるCube を敵にして、
弾を発射する 2 の直進弾に判定を付けてみたものです。




0 件のコメント:

コメントを投稿