2Dアクションゲームのプレイヤーを左右に動かす超基本【Unityゲーム制作】

今回のはUnityでアクション系ゲームに必須ともいえる「キーボード入力」でキャラクターを動かすのを簡単に実装していきます。とりあえずは「左右」に動かす、超基本です。

はじめに

使用する「Unityのヴァージョンは2020.3.21f1」です。

テンプレートは2Dを選択しています。

実装開始

ここから実装開始です。

フィールド(地面)を作成

まずはフィールドというか、地面を作成ですね。ヒエラルキーメニューで右クリック。2Dオブジェクト→スプライト→「正方形」を選択。

名前をGroundに変更して、Transformの位置とスケールを変更して画面下の方に配置。SpriteRendererの色もとりあえず黒色に変更しておきます。

プレイヤーの作成

次はプレイヤーの作成です。

同じように2Dオブジェクト→スプライト→「正方形」を選択。

ただの白い四角ですが、とりあえずこれを動かすプレイヤーとします。

上がシーンビュー。下がゲームビューです。

プレイヤーの設定

現状だと白い四角い絵が貼り付いているだけなので、再生しても何も起きないので設定を追加します。

Playerインスペクターの「コンポーネントを追加」から「Rigidbody 2D」と「Box Collider 2D」を追加。

ざっくり簡単に説明すると「Rigidbody 2D」は物理エンジンと言われたりしますが、簡単に言うと質量や重力を与えたり「動かす」のに必要な設定ですな。

「Collider 2D」は衝突設定と言われるものですね。これを設定しないと床とか壁を全てすり抜けてしまいます。

床の設定

次に床の設定です。プレイヤー設定だけで実行してみると重力で下に落ちていきますが、床をすり抜けて落ちていきます。

ということで床にも同じようにBoxColliderを追加。

これで一度再生してみて、床に着地すればOK。

キー入力スクリプト

次に「左右のキー入力した時にプレイヤーが動く」設定をしていきます。プロジェクトのAssetsフォルダ内で右クリック。作成→C#スクリプトを選択し、名前をPlayerにします。

スクリプトをダブルクリックで開いて、下記の様に中身を変更。

Unityではキーボード入力やゲームパット入力をサポートしています。あくまでも一例ですが、こんな感じにスクリプトを変更。

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

public class Player : MonoBehaviour
{
    [SerializeField] private float PlayerSpeed;

    private float InputX;
    private Rigidbody2D rb2d;
    void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
    }
    void Update()
    {
        InputX = Input.GetAxisRaw("Horizontal");
        rb2d.velocity = new Vector2(InputX * PlayerSpeed, rb2d.velocity.y);
    }
}

簡単に説明すると、キャラクターのスピードはインスペクターで設定できるようにserializefiledで定義。

左右キーを入力するとInputXに1か-1が代入され、Rigidbody2Dのvelocityでプレイヤーを動かしてます。ざっくりだとこんな感じ

キーボードのA、D、←、→に反応します。

このスクリプトをプレイヤーにくっつけてPlayerSpeedに適当な値を入力。

とりあえずこれでPlayerが左右に動きます。ここからジャンプだったり、キャラクター、アニメーションなどなど色々加えて完成させていくって感じですね。

とりあえず今回は超基本の基本、左右の動きだけ。

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