うえすと開発メモ

カテゴリ: Unity2D

Unity2DのSpriteを簡単にフェードイン・フェードアウトアニメーションさせるスクリプトです。

TweenAlphaSprite.cs
https://gist.github.com/WestHillApps/8160345

上記スクリプトをインポート後、フェードさせたいGameObjectにスクリプトをD&Dまたは、[AddComponent]→[WestHill]→[Tween]→[AlphaSprite]で貼っつけてInspectorから設定します。
unity2d_tween_alpha_01
FromAlpha :
 開始時の透明度
ToAlpha :
 終了時の透明度
Duration :
 アニメーション時間(秒)
Start Delay :
 アニメーション開始までのディレイ
Play Style :
 Once(1回のみ)
 Loop(繰り返し)
 PingPong(再生・逆再生を繰り返し)
Event Receiver :
 Play StyleがOnceの時にアニメーション終了後に通知を受け取りたいGameObject
Call When Finished :
 Event Receiverに設定したGameObjectで通知を受け取りたいメソッド名
Play On Awake :
 起動と同時に再生するフラグ

スクリプトから実行する場合はこんな感じで
public void StartAnim()
{
    TweenAlphaSprite tweenAlpha = GetComponent<TweenAlphaSprite>();
    tweenAlpha._FromAlpha = 0f;
    tweenAlpha._ToAlpha = 1f;
    tweenAlpha._Duration = 1f;
    tweenAlpha.Play ();
}

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

Unity4.3.x(4.3.2〜4.3.4で確認)ではRigidBody2DでKinematicがONだと、
2D系のCollisionでIsTriggerにチェックして他のCollisionと接触しても
OnTriggerEnter2D等のイベントが発生しない不具合があるようです。

参考:https://answers.unity3d.com/questions/575438/how-to-make-ontriggerenter2d-work.html

一先ずこれを回避するために以下のスクリプトを貼り付けて、Kinematicがオフでも物理挙動を行わないように矯正することで、トリガー系のイベントが呼ばれるようにしました。


毎フレームlocalpositionを固定しているため、オブジェクトを移動させたい場合は空のGameObjectを親にして親を動かすことで対処可能です。

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

このページのトップヘ