[Unity]キャラクターをキーボードで動かす方法(プログラミングなしの方法とありの方法両方解説)

Unityで操作キャラをキーボードで動かす方法を解説していきます。

プログラミングを一切使わない方法使う方法の両方を解説していくので、とにかくキャラクターを動かしてみたいという場合はプログラミングなしの方法、プログラミングしてみたいという場合はプログラミングありの方法を参考にしてみてください。

目次

準備

プログラミングなしでキャラを動かす

FPS視点で操作する

プログラミングで動かす

準備

解説には「Standard Assets」を使用しています。Standard Assetsのダウンロード方法はこちらで解説しています。

解説に入る前にプロジェクトがPC向けになっているか確認しておきましょう。PC用のゲームしか開発したことがない場合は問題ありませんが、スマホ用のゲームなど別のプラットフォームでゲームを開発したことがある場合はPC用に戻しておいてください。

TOPに戻る


プログラミングなしでキャラを動かす

ダウンロードした「Standard Assets」には操作キャラが初めから入っています。Standard Assetsをダウンロードした状態でプロジェクトの検索欄(画像1番目の赤丸)に「ThirdPersonController」と検索します。

するとその名前のキャラクターが表示される(画像2番目の赤丸)のでそれをヒエラルキーに入れます。

これでゲームを実行するとキーのW、A、D、Sで前後左右に移動することができます。

TOPに戻る


FPS視点で操作する

同じくプロジェクトの検索欄で「RigidBodyFPSController」と検索し、同じ名前のオブジェクトをヒエラルキーに移動させます(画像1番目の赤丸)

次にヒエラルキーに元々ある「Camera」をクリックして(画像2番目の赤丸)右上のインスペクターの真下のチェックを外します(画像3番目の赤丸)

これでゲームを実行するとFPS視点でキャラクターを操作することができます。

TOPに戻る


プログラミングで動かす

自分でプログラミングをする場合はヒエラルキーに操作するキャラのオブジェクトを用意します。

画像ではヒエラルキーの隣の「+」マークから四角のオブジェクトを追加しています。

操作するオブジェクトを用意できたらオブジェクトをクリックして画面右下の「コンポーネントを追加」をクリックします。

すると新たに項目が表示されるので上の検索欄から「Rigidbody」と検索して表示されたRigidbodyをクリックします。

次にプロジェクトの真下にある「+」マークをクリックして「C#スクリプト」を選びます。

スクリプトの名前はなんでもいいですが、ここでは「PlayerController」としています。

コードは以下のコードをコピー&ペーストしてください。(名前を変えた場合はclass名の部分だけ注意してください)

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

public class PlayerController : MonoBehaviour
{

    public float speed = 5.0f;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.W))
        {
            transform.position += transform.forward * speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.D))
        {
            transform.position += transform.right * speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.A))
        {
            transform.position -= transform.right * speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.S))
        {
            transform.position -= transform.forward * speed * Time.deltaTime;
        }
    }
}

これでW、A、D、Sのキーで動かせるようになります。

移動するコードを以下のようにすれば矢印のキーで移動させることもできます。

    void Update()
    {
        if (Input.GetKey("up"))
        {
            transform.position += transform.forward * speed * Time.deltaTime;
        }
        if (Input.GetKey("right"))
        {
            transform.position += transform.right * speed * Time.deltaTime;
        }
        if (Input.GetKey("left"))
        {
            transform.position -= transform.right * speed * Time.deltaTime;
        }
        if (Input.GetKey("down"))
        {
            transform.position -= transform.forward * speed * Time.deltaTime;
        }
    }

さらに移動するコードに「Down」というコードを追加すると一回の入力で一度だけ動かすようにすることもできまます。

if (Input.GetKeyDown(KeyCode.W))
        {
            transform.position += transform.forward * speed * Time.deltaTime;
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            transform.position += transform.right * speed * Time.deltaTime;
        }
        if (Input.GetKeyDown(KeyCode.A))
        {
            transform.position -= transform.right * speed * Time.deltaTime;
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            transform.position -= transform.forward * speed * Time.deltaTime;
        }

以下の動画のような感じです。

TOPに戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です