【Unity】矢印キーによる2dキャラクターの移動方法

はじめに

2Dゲームのキャラクターを、キーボードの矢印キーを使って動かす方法について解説します。

2種類の移動方法

キャラクターを移動させるには、方法が2つあります。

  • Transformの座標を直接動かす
  • 物理エンジンを使用

2Dアクションゲームを想定して、障害物との当たり判定などの設定が簡単な、Unityの物理エンジンを使用した方法を紹介します。

ステージとキャラクターの配置

ゲームのステージとキャラクターを配置しましょう。

この記事では、こちらの無料アセットのデモシーンを使います。

Simple 2D Platformer Assets Pack

デモシーンを開くと、キャラクターとステージがゲーム画面に表示されています。

キャラクターの設定

動かすキャラクターには、Rigidbody 2Dコンポーネントをつけます。

意図しない回転を避けるため、Freeze Rotation > zのチェックを外しておきましょう。

ここにチェックを入れておかないと、キャラクターが転んじゃうよ!

当たり判定

キャラクターとステージには、コライダーをつけておきましょう。

コライダーで、オブジェクト同士の当たり判定の範囲を設定できます。

もしコライダーがステージに設定されていないと、プレイヤーがすり抜けてしまいます。

移動スクリプト

以下のスクリプトを作成してキャラクターにアタッチしましょう。

Rididbocyコンポーネントを取得し、左右の矢印キーを押した時に、動く方向や速さを指定します。

rigidbody2D.velocityを変えることで、キャラクターを動かします。

プレイヤーの動く速度:speedの値をインスペクターから変えることができます。

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

public class MovePlayer : MonoBehaviour
{
    public float speed = 3f;
    private float playerSpeed;

    Rigidbody2D rigidbody2D;

    // Start is called before the first frame update
    void Start()
    {
        rigidbody2D = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        // 左キーを押したら左方向へ進む
        if (Input.GetKey(KeyCode.LeftArrow)) playerSpeed = -speed;
        // 右キーを押したら右方向へ進む
        else if (Input.GetKey(KeyCode.RightArrow)) playerSpeed = speed;
        // 何もおさなかったら止まる
        else playerSpeed = 0;

        rigidbody2D.velocity = new Vector2(playerSpeed, rigidbody2D.velocity.y);
    }
}

スタートすると、左右の矢印キーを押すとキャラクターが移動しました!

ジャンプはできないので、そのまま落ちてしまいます

おわりに

Unity物理エンジンを使用した、2Dキャラクターの移動方法について紹介しました。

キャラクターを動かす際は、当たり判定も忘れずに設定しましょう。

2Dアクションゲームを手軽に作れる人気のアセットはこちら。

Corgi Engine – 2D + 2.5D Platformer

タイトルとURLをコピーしました