2Dアクションゲームのプレイヤーを動かしてみる【Unityゲーム制作】

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

プレイヤーをキー入力で動かす

「Unity 2019.4.1f1」のバージョンでお届けします。

フィールドを作成

まずはフィールドというか、地面を作成ですね。タイルマップでさくっととりあえず簡単に作成。下の緑色の部分です。作成方法はタイルマップ編で簡単に解説してあります。

キャラクター(プレイヤー)の作成

次はプレイヤーの作成ですね。とりあえず画像は何でもいいです。テストなので。シーンにドラッグアンドドロップ。

キャラクターの設定

当然、シーンに画像を置いただけではただ絵が貼り付いているだけなので、このまま再生しても何も起きないので、ここに設定を追加。追加したのは「Rigidbody 2D」と「Circle Collider 2D」。

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

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

床の設定

次に床の設定ですね。プレイヤーの設定だけで実行すると床をすり抜けて落ちていくので床にも同じようにColliderの設定を追加。「Tilemap Collider 2D」というやつですね。追加するだけでOK。

キー入力スクリプト

次に「左右キー入力した時にプレイヤーが動く」設定をしていきます。Unityではキーボード入力やゲームパット入力をサポートしていて、Hotizontalを利用するとAとD、←と→を認識するのでこれを利用。あくまでも一例ですが、こんな感じにスクリプトを作成。

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

public class player : MonoBehaviour
{
    // キャラクターの動作スピード
    public float maxSpeed;

    private Vector2 move;
    private Rigidbody2D rb2d;

    // Start
    void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
    }

    // Update
    void Update()
    {
        move.x = Input.GetAxis("Horizontal") * maxSpeed;
        move.y = rb2d.velocity.y;
        rb2d.velocity = move;

    }
}

もちろん、他の方法もたくさんあります。

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

Vector2はx方向とy方向をもってる変数ですね。update()内でどの方向キーが入力されたのかを取得して、Rigidbody2Dのvelocityでプレイヤーを動かしてます。ざっくりだとこんな感じ

このスクリプトをプレイヤーとなるオブジェクトにコンポーネントを追加。

とりあえずこれで左右は動きます。ここから上下の動きだったり、アニメーションだったり色々加えて完成させていくって感じですね。

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

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