動画のように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;
}
}
複数の画像をまとめて反転させる
画像のキャラクターには顔と足のダッシュ画像・ポーズ画像と合計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の数値を入力してください。そうしないと右を向いた時に大きさが大変なことになります。
コメントを残す