ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

Unity学習#3 (Unity 2019.4.1f1) キャラクターを動かす

今日はキャラクターを操作します。背景を動かす方法まで行く予定でしたが、思いのほかボリュームがありそうなので、一旦まとめました。


(#2~#4をまとめた内容をアップしました)
tomo-mana.hatenablog.com

今のオブジェクトの位置

参考
https://atoz-gamedia.com/2018/11/10/2daction-sample-2/atoz-gamedia.com

インターフェース
GetComponent().position;

使用例

public class Player : MonoBehaviour
{
    int speed = 0.01f;
    void Update()
    {
        Vector3 pos;
        pos = GetComponent<Transform>().position;
        pos.x = pos.x + speed;
        GetComponent<Transform>().position = pos;
    }
}

参考
GetComponent().positionは直接編集ができないようです(アクセサメソッド)
https://www.sejuku.net/blog/51251

十字キーによる操作

参考
www.sejuku.net

キーの取得

インターフェース
Input.GetKey(KeyCode.LeftArrow) // 押している間ずっと
Input.GetKeyUp(KeyCode.LeftArrow) // 離した時
Input.GetKeyDown(KeyCode.LeftArrow) // 押した時

オブジェクトの移動

GetComponent().Translate(x, y, z);
this.transform.Translate(x, y, z);

使用例

public class Player : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.LeftArrow)){
            this.transform.Translate(-0.1f, 0.0f, 0.0f);
        }
        if (Input.GetKeyDown(KeyCode.RightArrow)){
            this.transform.Translate(0.1f, 0.0f, 0.0f);
        }
        if (Input.GetKeyDown(KeyCode.UpArrow)){
            this.transform.Translate(0.0f, 0.1f, 0.0f);
        }
        if (Input.GetKeyDown(KeyCode.DownArrow)){
            this.transform.Translate(0.0f, -0.1f, 0.0f);
        }
    }
}

f:id:tomo_mana:20200701003850p:plain
座標系

気づいたこと

※GetKey()で実装すると、Update()の頻度で移動速度が変わります
※GetKeyDown()で実装すると、ボタンを押した回数だけ移動します

次にやること

背景の移動は、一枚絵をスクロール(シューティングゲーム系)やタイルマップ(RPG系)などいくつか方法がありそうです。
最初に知りたいのはRPG方式なので、タイルマップを調べます。