2016/06/21
概要
敵に攻撃したとき、攻撃を受けた瞬間に画面全体がゆれるエフェクトを入れると、プレイ時の気持ち良さが格段に向上する(気がする)。
iTweenのShakePositionを使ってカメラを揺らせば、非常に簡単に画面ゆれが実装できたのでご紹介。
下記のような感じ。ずっと見てたら酔う。。。
※素材提供
星乃だーつ グーテンベルグの娘様
実装方法
・Asset StoreからiTweenをインポート ※無料です。
・ObjectShaker.csを作成
using UnityEngine; using System.Collections; public class ObjectShaker : MonoBehaviour { public void Shake(GameObject shakeObj){ iTween.ShakePosition(shakeObj,iTween.Hash("x",0.3f,"y",0.3f,"time",0.5f)); } }
ポイント
・ObjectShaker.Shake(GameObject)で引数に指定したGameObjectを揺らすことができる。(カメラ以外もOK)
・画面全体を揺らしたいときは、引数にカメラのGameObjectを渡せばOK
・iTween.Hashで画面揺れの方向、大きさ、時間などを指定できる。
つまづいたところ
iTween.ShakePosition(shakeObj,iTween.Hash(“x”,0.3f,”time”,0.5f));
iTween.ShakePosition(shakeObj,iTween.Hash(“y”,0.3f,”time”,0.5f));
最初は上みたいな書き方をしていたが、最後に渡したHashしか適用されないのか、y方向にしか画面がゆれず。
縦横に揺らしたい時は、iTween.Hash(“x”,0.3f, “y”,0.3f,”time”,0.5f)とx,y方向の揺れを一気に指定すれば良い。
iTween.Hash(“key”, “value”, “key”, “value”, “key”, “value”, …)みたいにアニメーションのパラメータをハッシュ値で指定できる。
アニメーションに渡せるパラメータはメソッドごとに異なるため、APIドキュメントをご参照ください。
※NGUIのSpriteは上記方法で揺らすことができないので、注意
※初めてiTweenを呼んだときにかくつくことがあるので、その場合はiTween.Init(揺らしたいGameObject)をStartかAwake時に実行しておくと良い。