はこねのはこ

はこねさんの備忘録

Unity 画像の向きを反転させる

はじめに

2Dゲームを作っていて、右向きの画像を左向きにするなど、反転させたい時があります。 その時の実現方法のメモです。

動いてる様子

f:id:hakonebox:20181014203254g:plain

実現方法

transform.のScaleのXを1と-1で切り替えると良さそうです。

public class ActorManager : MonoBehaviour
{
    public enum DIR
    {
        NONE,
        LEFT,
        LEFT_UP,
        UP,
        RIGHT_UP,
        RIGHT,
        RIGHT_DOWN,
        DOWN,
        LEFT_DOWN
    }
    public static Vector3 SetObjectDir(DIR dir)
    {
        Vector3 vector3 = new Vector3(1, 1, 1);
        switch (dir)
        {
            case DIR.RIGHT: 
                vector3 = new Vector3(-1, 1, 1); //右方向を向く
                break;
            case DIR.LEFT: 
                vector3 = new Vector3(1, 1, 1); //左方向を向く
                break;
            default:
                //do nothing
                break;
        }
        return vector3;
    }
}
        switch (charMoveSi)
        {
            case MOVE_DIR.STOP:
                break;
            case MOVE_DIR.LEFT:
                transform.localScale = ActorManager.SetObjectDir(ActorManager.DIR.LEFT);
                break;
            case MOVE_DIR.RIGHT:
                transform.localScale = ActorManager.SetObjectDir(ActorManager.DIR.RIGHT);
                break;
        }

おわりに

実現できるようにはなりましたが、なんだか納得できていません。
戻り値にVector3つかって、transform.localScaleに入れるのはどうなんでしょう?
もっとスマートにかけるような....