【Unity】スクリプトで親要素を動的に変更する方法

2017.08.06 自習室 0

やりたかったのは下の動画のように、プレイヤーと幽霊が接触すると幽霊がプレイヤーに追従するようになる、という処理です。ここではこの処理の実装方法と合わせて、オブジェクトの親要素をスクリプトで切り替える方法を説明します。

ちなみにこの動画はUnity1weekという1週間ゲームジャムで作ったゲームの動画です。以下のリンクからプレイできますので、よかったらプレイしてみてください。

ゲームはこちらからプレイできます

環境

  • Unity 5.6.0f3

このページの構成

ポイント
スクリプト全文
処理の説明
使用したアセットなど

ポイント

手順としては以下のとおりです。動的に親要素を変更する処理は②にあります。
① プレイヤーと幽霊にcolliderをアタッチする。幽霊の方はis Triggerにチェックをつけておく。
② プレイヤーと接触したら、幽霊をプレイヤーの子要素に変更する。
③ 幽霊の横方向の移動を止める。
④ 幽霊の向きを変える。
⑤ 幽霊の位置を調整する。

スクリプト全文

処理の説明

前準備

プレイヤーにRigidBodyとColliderをアタッチしてください。タグも「Player」に変更しています。幽霊にはColliderをアタッチし、is Triggerにチェックをつけておいてください。

プレイヤーと幽霊が接触したら、幽霊をプレイヤーの子要素にする

幽霊に下のGhost Controllerスクリプトをアタッチします。移動処理については特に説明しませんので、下記スクリプトを参考にしてください(iTweenというアセットを使用しています)。

接触時の処理はOnTriggerEnter2Dに書かれている部分です。transform.parentにプレイヤーのtransformを指定して、幽霊をプレイヤーの子要素に変更します。

横方向の移動を止める

横方向の移動処理を止めていないため、このままだとそのまま画面外に移動してしまいます。GhostControllerに以下の記述を追加して横移動をストップします。なお、以降はOnTriggerEnter2D内のみ記載します。

幽霊の向きを変える

幽霊がプレイヤーと反対方向を向いたままなので向きを反転します。GhostControllerに以下の記述を追加して幽霊の向きを反転します。

幽霊の位置を調整する

幽霊を常にプレイヤーの後ろに位置するように修正します。GhostControllerに以下の記述を追加して幽霊の位置を調整します。

使用したアセットなど

プレイヤー:
「コーゲンシティ・オールスターズ!」 ユニティちゃんピクセルアートパック for アクションゲーム Vol.2
ステージ:
8-Bits Platform Kit 1(有料アセット)
幽霊:
ソザイング様 フリー素材 おばけ
幽霊の動き:
iTween(無料アセット)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です