はじめに
この記事では、Unity2Dゲーム開発でよく使う「キャラクターの進行方向によって向きを変える仕組み」の作り方を解説します!この機能を使えば、キャラクターが右に進むときは右を向き、左に進むときは左を向く自然な動きを作れます。
初心者でもわかりやすい手順で進めていくので、ぜひゲーム開発に役立ててくださいね!
必要な準備
1. キャラクター画像を用意する
まず、キャラクターとして使う画像(PNG形式など)を準備してください。ネットで無料の素材をダウンロードするか、オリジナルで作成したものを使いましょう。
2. Unityプロジェクトにインポート
- ダウンロードした画像ファイルをプロジェクトの「Assets」フォルダにドラッグ&ドロップします。
- その画像を「ヒエラルキー(Hierarchy)」ウィンドウにドラッグ&ドロップして、ゲームオブジェクトとして配置します。
キャラクターに物理挙動を追加する
次に、キャラクターに動きや物理的な要素を追加します。
- リジッドボディ2Dを追加
- ヒエラルキーウィンドウでキャラクターオブジェクトを選択します。
- **インスペクター(Inspector)**ウィンドウの「Add Component」をクリック。
- 「Rigidbody2D」を検索して追加します。
- 設定を変更
- Rigidbody2Dの「Body Type」を「Kinematic」に変更します。
※この設定により、キャラクターは物理的な衝突には影響されず、自分でプログラムした動きだけをします。
- Rigidbody2Dの「Body Type」を「Kinematic」に変更します。
キャラクターを動かすスクリプトを作成する
キャラクターの動きを制御するスクリプトを作成します。
- 新しいスクリプトを作成
- プロジェクトウィンドウを右クリックし、「Create」→「C# Script」を選びます。
- スクリプト名を「
PlayerMove
」とします。
- スクリプトをキャラクターにアタッチ
- 作成した「PlayerMove.cs」をドラッグ&ドロップして、キャラクターオブジェクトに追加します。
- スクリプトを記述 以下のコードを「PlayerMove.cs」に記述してください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
Rigidbody2D rb2d;
private float speed;
void Start()
{
speed = 5;
rb2d = GetComponent<Rigidbody2D>();
}
void Update()
{
float input = Input.GetAxisRaw("Horizontal");
rb2d.velocity = new Vector2(input * speed, rb2d.velocity.y);
// 進行方向へ向きを変える
if (input < 0)
{
transform.eulerAngles = new Vector3(0, 0, 0);
}
else if (input > 0)
{
transform.eulerAngles = new Vector3(0, 180, 0);
}
}
}
スクリプトの解説
- 変数の設定
Rigidbody2D rb2d
:キャラクターの動きを制御する物理コンポーネントを格納します。speed
:キャラクターが動く速さを設定します。
- Startメソッド
- ゲーム開始時に
Rigidbody2D
を取得し、速度を設定します。
- ゲーム開始時に
- Updateメソッド
- 毎フレームで入力を取得し、キャラクターを左右に移動します。
Input.GetAxisRaw("Horizontal")
でプレイヤーの入力(右=1、左=-1、何もしない=0)を取得。- 入力に応じてキャラクターの向きを変える処理を
transform.eulerAngles
で実装しています。
1. 宣言部分
Rigidbody2D rb2d;
private float speed;
Rigidbody2D rb2d;
- キャラクターに物理的な動きを付けるために使います。
Rigidbody2D
は2Dゲームの物理演算(重力や衝突)を管理するコンポーネントです。 - このコードでは、キャラクターを動かすときに使います。
- キャラクターに物理的な動きを付けるために使います。
private float speed;
- キャラクターの移動速度を保存するための変数です。
float
は小数点が使える数字の型です。
2. Start
メソッド
void Start()
{
speed = 5;
rb2d = GetComponent<Rigidbody2D>();
}
speed = 5;
- キャラクターの移動速度を5に設定しています。数値を変えることで、キャラクターの速さを調整できます。
rb2d = GetComponent<Rigidbody2D>();
- このオブジェクトにアタッチされている
Rigidbody2D
を取得して、rb2d
という変数に代入しています。 - こうすることで、この
rb2d
を通じて物理的な操作ができるようになります。
- このオブジェクトにアタッチされている
3. Update
メソッド
void Update()
{
float input = Input.GetAxisRaw("Horizontal");
rb2d.velocity = new Vector2(input * speed, rb2d.velocity.y);
// 進行方向へ向きを変える
if(input < 0)
{
transform.eulerAngles = new Vector3(0, 0 ,0);
}
else if(input > 0)
{
transform.eulerAngles = new Vector3(0, 180, 0);
}
}
Input.GetAxisRaw("Horizontal")
- キーボードの左右矢印キー(または
A
/D
キー)を押したときの入力を取得します。 - 左キーを押すと
-1
、右キーを押すと1
、何も押していないときは0
を返します。
- キーボードの左右矢印キー(または
rb2d.velocity = new Vector2(input * speed, rb2d.velocity.y);
- ここでキャラクターを左右に動かします。
input * speed
: 入力(-1, 0, 1)に速度を掛けて移動速度を決定します。rb2d.velocity.y
: 上下方向の速度はそのままにして、横方向だけを変更します。
- 向きを変える部分
if(input < 0)
- 左に移動しているとき(
input
が負の値のとき)、キャラクターを元の向き(0度)に戻します。 transform.eulerAngles
: オブジェクトの回転を指定します。
- 左に移動しているとき(
else if(input > 0)
- 右に移動しているとき、キャラクターを180度回転させます。
全体の動き
- ゲームが始まると、移動速度が5に設定されます。
- 毎フレーム、プレイヤーの入力(左右のキー)を読み取ります。
- 入力に応じて、
Rigidbody2D
を使ってキャラクターを左右に動かします。 - 入力方向に応じてキャラクターの向きを変えます。
動きを確認する
- ゲームプレイを開始 Unityエディタの「Play」ボタンを押してゲームを開始します。
- キャラクターを操作 キーボードの左右矢印キーまたはA/Dキーでキャラクターを動かしてみてください。
- 右に進むとキャラクターが右を向きます。
- 左に進むとキャラクターが左を向きます。
よくある質問
- Qキャラクターが動かない場合はどうしたらいいですか?
- A
以下を確認してください。
- スクリプトがキャラクターオブジェクトに正しくアタッチされているか。
- Rigidbody2Dコンポーネントが追加され、Body Typeが「Kinematic」に設定されているか。
- スクリプト内のコードにエラーがないか。
- Qキャラクターの動きが速すぎたり遅すぎたりします。
- A
スクリプト内の
speed
変数の値を調整してください。例えば、speed = 3;
にすると少し遅くなります。
- Qスプライトの向きが反転しない場合は?
- A
スプライトの向きが最初から逆向きの場合、
transform.eulerAngles
の値を確認し、適宜変更してください。
まとめ
この記事では、Unity2Dでキャラクターの向きを進行方向に合わせる仕組みを作る方法を解説しました。このテクニックはゲーム制作の基本ですが、習得すれば自分だけのオリジナルゲームを作る大きな一歩となります!
Unityを使ったゲーム開発は、実際に手を動かして学ぶことでどんどん楽しく、スキルもどんどん向上します。しかし、「もっと本格的に学びたい」「プロのクリエイターにアドバイスをもらいたい」と思ったことはありませんか?
そんな方におすすめなのが、バンタンゲームアカデミー!
バンタンゲームアカデミーでは、Unityやゲーム制作を基礎から実践的に学べるカリキュラムが充実しています。さらに、業界で活躍するプロの講師から直接指導を受けられるので、効率よくスキルアップすることが可能です。初心者の方でも安心して学べる環境が整っていますよ!
資料請求は無料でできるので、気になる方はぜひ公式サイトをチェックしてみてください。プロを目指す一歩を踏み出してみましょう! 😊
自分のゲーム制作スキルを次のステージに進めるために、学びの場を活用するのも良い選択肢ですね!