前回は、Unity 6でCubeを仮のプレイヤーとして配置し、TransformやMaterialなどの基本設定を行いました。
今回は、いよいよそのPlayerをキーボードで動かしてみます。
ただし、最初から自分ですべてのC#コードを書くのではなく、このブログのテーマでもあるAIを活用します。
ChatGPTなどのAIに「Unityでプレイヤーを動かしたい」と相談し、C#スクリプトを作成してもらいながら実装を進めます。
AIが生成したコードをコピーするだけではなく、どこにスクリプトを作るのか、どのGameObjectに設定するのか、コードが何をしているのかについても初心者向けに確認していきます。
前回のPlayer作成については、こちらの記事で解説しています。
Unity 6でプレイヤーキャラクターを配置する方法|初心者向けに基本設定を解説
今回実装するプレイヤー操作
今回は、キーボードを使ってPlayerを前後左右に動かせるようにします。
最初からジャンプやダッシュ、アニメーションなどを追加するとコードが複雑になるため、まずはシンプルな移動だけを実装します。
今回の目標は、
- Wキーで前へ移動
- Sキーで後ろへ移動
- Aキーで左へ移動
- Dキーで右へ移動
- 移動速度をInspectorから変更できる
という基本的な操作です。
まずは「キーを押すとPlayerが動く」というUnityの基本的な仕組みを理解することを目標にします。
AIにプレイヤー移動の方法を質問する
今回は、C#コードを最初から自分で書くのではなく、AIに相談するところから始めます。
例えばChatGPTに、
Unity 6で3DのPlayerをWASDキーで前後左右に移動させたいです。初心者でも分かるシンプルなC#スクリプトを作ってください。移動速度はInspectorから変更できるようにしてください。UnityのInput Managerを使う方法でお願いします。
と質問します。

AIに質問するときは、単に
プレイヤーを動かすコードを書いて
と伝えるよりも、
- 使用しているUnityのバージョン
- 2Dか3Dか
- 何のキーで操作したいか
- どのような動きを実装したいか
などを具体的に伝えた方が、自分の目的に合った回答を得やすくなります。
AIをゲーム制作で利用するときは、「何を作りたいのか」をできるだけ具体的に説明することが重要です。
AIが生成したコードを確認する
AIからC#スクリプトが生成されたら、すぐにUnityへ貼り付ける前に内容を簡単に確認します。
初心者の場合、コードをすべて理解する必要はありません。
まずは、
- プレイヤーの移動速度を設定している部分
- キーボード入力を取得している部分
- 移動方向を計算している部分
- Playerの位置を変更している部分
があることを確認します。
分からないコードがある場合は、AIにそのまま質問することもできます。
例えば、
このコードを初心者向けに1行ずつ説明してください。
と質問すれば、生成されたコードが何をしているのか説明してもらえます。
これはAIを使ってプログラミングを学ぶときにも便利な使い方です。
[SerializeField] private float moveSpeed = 5f;
Playerの移動速度です。SerializeFieldを付けることで、private変数でもUnityのInspectorから値を変更できます。
float horizontal = Input.GetAxisRaw("Horizontal");
float vertical = Input.GetAxisRaw("Vertical");
キーボードの左右・前後入力を取得しています。通常の設定では、HorizontalがA・D、VerticalがW・Sに対応します。
Vector3 movement = new Vector3(horizontal, 0f, vertical).normalized;
X方向とZ方向の入力から、Playerが移動する方向を作っています。Yを0にしているため、このコードでは上下方向には移動しません。
transform.Translate(
movement * moveSpeed * Time.deltaTime,
Space.World
);
計算した方向へPlayerを移動させます。Time.deltaTimeを掛けることで、PCのフレームレートによる移動速度の差を小さくします。
今回のスクリプトではInput Managerを使用するため、Unityの「Edit → Project Settings → Player → Active Input Handling」を「Both」に設定します。

PlayerMovementスクリプトを作成する
AIが生成したコードをUnityで使用するために、新しいC#スクリプトを作成します。
前回の記事でAssets内に作成した
Scripts
フォルダを使用します。
今回はプレイヤーの移動を担当するスクリプトなので、
PlayerMovement
という名前にします。

Unityでは、C#スクリプトのファイル名とクラス名を一致させることが重要です。
そのため、AIが生成したコードのクラス名も
PlayerMovement
になっていることを確認します。
作成したスクリプトを開き、AIから生成されたコードを入力します。

using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
[SerializeField] private float moveSpeed = 5f;
private void Update()
{
float horizontal = Input.GetAxisRaw("Horizontal");
float vertical = Input.GetAxisRaw("Vertical");
Vector3 movement = new Vector3(horizontal, 0f, vertical).normalized;
transform.Translate(
movement * moveSpeed * Time.deltaTime,
Space.World
);
}
}
保存したらUnityへ戻り、コンパイルが完了するまで少し待ちます。
Playerにスクリプトを追加する
C#スクリプトを作成しただけでは、Playerはまだ動きません。
作成したPlayerMovementスクリプトを、実際に動かしたいGameObjectへ追加する必要があります。
今回はHierarchyにある
Player
へスクリプトを追加します。
Playerを選択すると、Inspectorに設定されているComponentが表示されます。
そこへPlayerMovementを追加すると、スクリプト内で設定した項目もInspectorに表示されるようになります。

今回のスクリプトでは、移動速度をInspectorから変更できるようにします。
例えば、
Move Speed = 5
のように設定しておけば、コードを書き直さなくてもInspectorから移動速度を調整できます。
Unityを再生してPlayerを動かす
スクリプトをPlayerに追加できたら、Unity上部のPlayボタンを押してゲームを実行します。
Gameビューをクリックしてから、
W
A
S
D
のキーを押してみます。
Playerがキー入力に合わせて移動すれば成功です。

最初は動作を確認することが目的なので、速度が少し速かったり遅かったりしても問題ありません。
InspectorのMove Speedを変更し、自分が操作しやすい速度を探してみます。
ここで重要なのは、
コードを書く → Unityで実際に動かす → 必要に応じて設定を変更する
という流れです。
AIが生成したコードでも、実際のUnity上で動作を確認することが必要です。
AIのコードが動かない場合はどうする?
AIが生成したコードは、必ず正しく動作するとは限りません。
Unityのバージョンやプロジェクトの設定によっては、エラーが発生することもあります。
例えば、
- Consoleに赤いエラーが表示される
- Playerがまったく動かない
- キーを押しても反応しない
- 想定とは違う方向へ動く
といった問題が発生する場合があります。
そのときは、AIにもう一度相談します。
特にエラーが表示された場合は、エラーメッセージを省略せずにAIへ伝えることが重要です。
例えば、
Unityでこのエラーが出ました。初心者向けに原因と修正方法を教えてください。
と伝え、その下にConsoleのエラーメッセージを貼り付けます。
必要であれば、自分が使用しているコードも一緒に送ります。
AIに「動きません」とだけ伝えるより、エラーや現在の状態を具体的に伝えた方が原因を見つけやすくなります。
今回は問題なく動作しましたが、AIが生成したコードは環境によってそのまま動かない場合もあります。
エラーが発生した場合は、Consoleに表示された内容を確認し、エラーメッセージと使用しているコードをAIに伝えて修正方法を質問します。
エラーが出なかった場合でも、Playerが想定した方向へ動くか、移動速度が適切かなどを実際に操作して確認することが重要です。
AIが生成したコードをそのまま信用しない
AIを使うと、短時間でC#コードを作成できるため非常に便利です。
しかし、生成されたコードが常に最適とは限りません。
古いUnity向けの方法が含まれていたり、現在のプロジェクト設定と合わなかったりすることもあります。
そのため、
AIにコードを作ってもらう
↓
コードの内容を確認する
↓
Unityで実際に実行する
↓
問題があればAIに再度質問する
という流れで使用することが大切です。
このブログでも、AIが生成した回答をそのまま掲載するだけではなく、実際にUnityで試して動作を確認した内容を紹介していきます。
AIを使うことで初心者でもコードを書ける?
今回のような基本的なPlayer移動であれば、AIに相談することでC#に詳しくなくても実装を始めることができます。
さらに、
この変数は何ですか?
なぜUpdateの中に書くのですか?
この処理をもっと簡単にできますか?
といった質問も、その場でAIに聞くことができます。
分からないことを検索するだけではなく、自分のコードについて直接質問できる点はAIの大きなメリットです。
ただし、AIだけにすべてを任せるのではなく、実際にコードを動かしながら少しずつ仕組みを理解していくことも大切です。
今回のPlayer移動を通して、C#スクリプトがGameObjectを動かす基本的な仕組みも確認できます。
今回のまとめ
今回はAIに相談しながら、Unity 6でPlayerをキーボード操作できるようにする流れを確認しました。
AIへ具体的な質問を送り、生成されたC#コードをPlayerMovementスクリプトとしてUnityに追加します。
さらに、そのスクリプトをPlayerへ設定し、Gameビューで実際にWASDキーを使って動作を確認します。
AIを利用するとコード作成のハードルを下げることができますが、生成されたコードが必ず正しいとは限りません。
実際にUnityで動作を確認し、問題が発生した場合はエラー内容をAIに伝えながら修正していくことが重要です。
次回は地面と当たり判定を作る
Playerを自由に動かせるようになったら、次はゲーム世界を作っていきます。
現在のPlayerは移動できるようになっただけなので、次回はPlayerが立つための地面を作成します。
さらに、Playerが地面をすり抜けないようにするためのColliderやRigidbodyなど、Unityの物理演算に関係する基本的な機能も確認していきます。
最終的には、Playerを自由に操作しながらゲーム世界を移動できる状態を目指します。
