LoginSignup
2
3

More than 5 years have passed since last update.

Unityでウディタのキャラクタ画像をAnimation付きで表示する

Last updated at Posted at 2017-02-09

ウディタ?

「WOLF RPGエディター」
RPGツクール的なゲーム制作ツール。
本来はWOLF RPGエディタ用にキャラクタ画像を作るのだけれど、この画像をUnityのゲームに持って来れば便利だなと思ったのでトライ。

画像を準備する

ここではエルフさん画像を用意する。
elfsan.png

アセットに登録する

Resourcesディレクトリにユニット用のUnitsディレクトリを作成する。
Spriteは後で分割するので画像タイプをMultipleにしておく。
ドット絵なのでFilterはPointのほうがそれっぽく表示される。
image

スプライトを分割する

SpriteEditor→Sliceで6*4に分割する。
image
これでSpriteは以下のように分割される。なお分割されたスプライトは左上をelfsan_0としてから右方向に番号が振られる。
image

アニメーションを作成する

SpriteRendererとAnimatorから成るオブジェクトを用意する。
image
アニメーションを作る。
これが各向きでの動作のひな形なので、elfsan_0~2の前向き三種類のみで作成する。
image

スクリプトを用意する

DirectionalSpriteという名のスクリプトを作成する。
image

あとはさっきのひな形Animationのスプライト名に対して、方向に応じたインデックスを与えるスクリプトを書いて完了。

DirectionalSprite.cs
using UnityEngine;
public class DirectionalSprite : MonoBehaviour {
    public enum Directions { N = 18, S = 0, E = 12, W = 6, NW = 15, NE = 21, SW = 3, SE = 9}
    //
    public string Name;
    public SpriteRenderer SpriteRenderer;
    public Directions Direction;
    //
    private string _lastSpriteName = "";
    private Sprite[] _subsprites;
    // 
    void Start () {
        SetName(Name);
    }
    void LateUpdate() {
        // 現在のスプライトを得る
        string name = SpriteRenderer.sprite.name;
        // スプライトが変化したか
        if (_lastSpriteName != name) {
            int idx = name.IndexOf('_');
            if (idx >= 0) {
                int id = int.Parse(name.Substring(idx + 1)) + (int)(Direction);
                //
                SpriteRenderer.sprite = _subsprites[id];
            }
            _lastSpriteName = SpriteRenderer.sprite.name;
        }
    }
    //
    public void SetName(string name) {
        Name = name;
        _subsprites = Resources.LoadAll<Sprite>("Units/" + name);
    }
}

歩くよ!
elfsan.gif

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3