Unityで操作キャラをキーボードで動かす方法を解説していきます。
プログラミングを一切使わない方法と使う方法の両方を解説していくので、とにかくキャラクターを動かしてみたいという場合はプログラミングなしの方法、プログラミングしてみたいという場合はプログラミングありの方法を参考にしてみてください。
目次
準備
プログラミングなしでキャラを動かす
FPS視点で操作する
プログラミングで動かす
準備
解説には「Standard Assets」を使用しています。Standard Assetsのダウンロード方法はこちらで解説しています。
解説に入る前にプロジェクトがPC向けになっているか確認しておきましょう。PC用のゲームしか開発したことがない場合は問題ありませんが、スマホ用のゲームなど別のプラットフォームでゲームを開発したことがある場合はPC用に戻しておいてください。
プログラミングなしでキャラを動かす
ダウンロードした「Standard Assets」には操作キャラが初めから入っています。Standard Assetsをダウンロードした状態でプロジェクトの検索欄(画像1番目の赤丸)に「ThirdPersonController」と検索します。
するとその名前のキャラクターが表示される(画像2番目の赤丸)のでそれをヒエラルキーに入れます。
これでゲームを実行するとキーのW、A、D、Sで前後左右に移動することができます。
FPS視点で操作する
同じくプロジェクトの検索欄で「RigidBodyFPSController」と検索し、同じ名前のオブジェクトをヒエラルキーに移動させます(画像1番目の赤丸)。
次にヒエラルキーに元々ある「Camera」をクリックして(画像2番目の赤丸)右上のインスペクターの真下のチェックを外します(画像3番目の赤丸)。
これでゲームを実行するとFPS視点でキャラクターを操作することができます。
プログラミングで動かす
自分でプログラミングをする場合はヒエラルキーに操作するキャラのオブジェクトを用意します。
画像ではヒエラルキーの隣の「+」マークから四角のオブジェクトを追加しています。
操作するオブジェクトを用意できたらオブジェクトをクリックして画面右下の「コンポーネントを追加」をクリックします。
すると新たに項目が表示されるので上の検索欄から「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;
}
以下の動画のような感じです。
コメントを残す