[Unity]2Dゲームで画像のキャラクターを移動時にスクリプトで左右反転させる方法(2022年)

動画のように2dゲームでキャラクターが移動する方向に体を向ける方法を解説していきます。

キャラ作りが下手なので奇妙な生命体が写っていますがあまり気にせず参考にしていっていださい。

目次

一つの画像だけを反転させる

複数の画像をまとめて反転させる

一つの画像だけを反転させる

一つの画像のみを反転させる場合は反転させる画像をクリックして画像右側の画像赤丸の部分のXの項目にチェックを付けると反転させることができます。

なのでスクリプト上で移動させる時にここにチェックが付くようにすればいいですね。

コードはvoid Update()の{}内に以下の3行から10行のコードをコピー&ペーストすればOKです。

コードではキーのAを押すと左、Dを押すと右を向くようになっています。

void Update()
    {
        if (Input.GetKey(KeyCode.A))
        {
            this.GetComponent<SpriteRenderer>().flipX = true;
        }
        if (Input.GetKey(KeyCode.D))
        {
            this.GetComponent<SpriteRenderer>().flipX = false;
        }
    }

TOPに戻る


複数の画像をまとめて反転させる

画像のキャラクターには顔と足のダッシュ画像・ポーズ画像と合計4つの画像が使われています。

先ほど解説した方法だと一つの画像の向きを反転できても他の画像もまとめて反転させるにはスクリプトを複数作らなければなりません。

それだと少し面倒ですし、なんかスマートじゃないので一つのスクリプトでまとめて反転させていきます。

スクリプトは以下のコードをコピー&ペーストしますが、一箇所だけ変更しないといけない箇所があります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;

public class NewBehaviourScript : MonoBehaviour
{
    //向き
    bool right = false;
    bool left = false;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        GameObject obj = GameObject.Find("player");
        Vector3 scale = obj.transform.localScale;
        if (Input.GetKey(KeyCode.A)&&left==false && scale.x > 0)
        {
            left = true;
            scale.x = -scale.x;
            obj.transform.localScale = scale;
        }
        if (Input.GetKeyUp(KeyCode.A))
        {
            left = false;
        }
        if (Input.GetKey(KeyCode.D)&&right==false)
        {
            right = true;
            scale.x = 0.08787499f;
            obj.transform.localScale = scale;
        }
        if (Input.GetKeyUp(KeyCode.D))
        {
            right = false;
        }
    }
}

スクリプトの35行目に数値が記入されていますが、ここには下画像の赤丸の項目にあるscaleのXの数値を入力してください。そうしないと右を向いた時に大きさが大変なことになります。

TOPに戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です