読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

エフェクトをキャラクターと一緒に動かす、キャラクターの向きに合わせてエフェクトを出す【Unity】

Unity

このエントリーをはてなブックマークに追加

今回はエフェクト関連の話をまとめて紹介!


エフェクトをキャラクターと一緒に動かす

例えば以下のようにジャンプをした際のエフェクトを例にあげます。
なお、左がエフェクトがキャラクターの一緒に動いている場合で、右がエフェクトが最初の場所から動かない場合です。

 
f:id:kan_kikuchi:20141223112322p:plain


画像上のようにキャラクターに近い位置にカメラがある場合は、ジャンプしたあとエフェクトが見えなくなってしまいます。なので、プレイヤーと一緒に動かす事でエフェクトが見えるようにしています。

逆に画像下のように遠くから見る場合は、エフェクトが発生位置から動くと不自然に見えるような気もするので、エフェクトが動かない場合が良いかもしれません。


肝心の一緒に動かす方法ですが、至極単純で

effect.transform.parent = player.transform;

とするだけです。こうすることでeffectがplayerの子となり、playerの下に入ります。
下の画像だと、Honoka~がplayerでJumpがeffectです。

f:id:kan_kikuchi:20141223112929p:plain

これで、playerの動きに合わせてeffectも動くようになります。


キャラクターの向きに合わせてエフェクトを出す

キャラクターの右前にエフェクト出したいけど、キャラクターが回転するからどこに出せばいいか分からない!てな場合のやり方です。
具体的には以下のパンチしてる時のエフェクトなど。

f:id:kan_kikuchi:20141223114156p:plain

これもやり方は至極単純です。

effect.transform.position = player.transform.position;

//プレイヤーから見て右前上にエフェクトを設定
effect.transform.position += player.transform.forward *  1.2f;
effect.transform.position += player.transform.right * 0.35f;
effect.transform.position += player.transform.up * 2.5f;

例えば、playerから見て右の方向(Vector3)をplayer.transform.rightで取れます。なので、それらを用いてベクトル演算を行えばプレイヤーの向きにあった方向にエフェクトが出せます。
ようは右に出したかったらplayer.transform.rightに適度な係数をかけて足せばいいだけですね!ラクチン!

取得出来る方向は、right, forward, upの三方向で左等の逆方向はマイナスを掛ければOKです。