Unityで2Dゲーム開発(8)〜OTSpriteの現フレーム画像オリジナルサイズ取得方法〜

OTSpriteの任意フレームを拡大あるいは縮小させた場合、そのOTSpriteのsizeプロパティは変化するため、そのフレームのオリジナルサイズとしては利用できません。

そこで、OTSprinteのCurrentFrame()を利用して、まず現フレームのオブジェクトを取得します。すると、そのオブジェクトのimageSizeプロパティのxとyを参照することで、オリジナルサイズを知ることができます。

例えば、スプライトを1秒で10倍に拡大後、1秒で元に戻すアニメーションは、

//sprite = OTSprite
void Kakudai ()
{
    OTTween _tween;
    _tween = new OTTween (sprite, 1.0f, OTEasing.Linear);
    _tween.Tween ("size", new Vector2(sprite.CurrentFrame().imageSize.x*10, sprite.CurrentFrame().imageSize.y*10));
    _tween.onTweenFinish = this.Shukusho;
}

void Shukusyo (OTTween tween)
{
    OTTween _tween;
    _tween = new OTTween (sprite, 1.0f, OTEasing.Linear);
    _tween.Tween ("size", new Vector2 (sprite.CurrentFrame().imageSize.x, sprite.CurrentFrame().imageSize.y));
}

のように書けます。

Unityで2Dゲーム開発(7)〜Orthelloユーザ入力イベント〜

Orthelloにはオブジェクトと関係するユーザ入力に対してコールバックを呼ぶ仕組みが用意されています。
例えば、任意のスプライトを指でタッチあるいはマウスでクリックした場合に処理を実施するのに使用します。
OTObjectにonInputというdelegate指定用のフィールドがあるので、ここにdelegateを設定します。

詳しいリファレンスは

にありますが、読みながら実践してみたところ、つまづいたところがありましたので挙げておきます。

一点目は対象オブジェクト(OTObjectを継承しているもの)の「Register Input」を有効にすることです。スクリプトからプロパティを指定して有効にするか、あるいはUnityエディタ上のInspectorタブ内で「Register Input」にチェックを入れます。
これについてはリファレンスを読めばしっかり書いてあります。

次に対象のオブジェクトにはColliderコンポーネントを付ける必要がある点です。(こちらはリファレンスに書いていないように思うのですが。。。)私はこれに気づくのにサンプルソース(Orthelloパッケージ内にあるDrag Testというサンプルが参考になりました。)などを巡って小一時間かかりました。ちなみに私が付けたのは「Box Collider」です。

これら二点について実施すれば、あとはリファレンスにあるコードを参考に、ユーザ入力をハンドリングすることができます。

Unityで2Dゲーム開発(3)〜Orthello設定〜

続きです。

Orthelloの設定を行います。

まず、シーンにOrthello提供のプレハブを設置します。
SceneビューまたはHierarchyビューへプロジェクト内のAsset > Orthello > Ojects 内にある OT をドラッグします。

次にHierarchyビューでOTを展開し、[View]を選択、
[Always Pixel perfect]にチェック、
[Pixel Perfect Resolution]に854×480(Player Settingsで設定した内容)
[Custom Size] 240

[Custom Size]の240はCubeオブジェクトがスケール通り表示されるかどうかを調整しながら設定します。
[GameObject]->[Create Other]->[Cube]でCubeを追加し、それによってHierarchyビューに追加された[Cube]を選択します。
Cubeの[Transform][Scale]をX:854、Y:480に設定し、Gameビューで見たときにCubeが画面にぴったり収まるように[Custom Size]を調整します。(Gameビューは一旦違うビューに切り替えないと正しく更新されません。)

結果、240という値に辿り着いています。(設定がCubeは削除してください。)

ここまでの作業で作成されたプロジェクトは2Dゲームのプロジェクトテンプレートとして使うことができます。(プロジェクト名だけは変えることになりますが。)

それでは、2Dゲームにおけるスプライトの表示に入っていきましょう。