2DアクションUnityゲームの作り方メモ

【Unity】初心者向け2Dアクションゲームを作ろう②|プレイヤーのアクション

2Dアクション
  1. 1. はじめに
  2. 2. プレイヤーを移動させる
    1. 2-1. Input Systemを導入する
    2. 2-2. 移動スクリプトを作成する
    3. 2-3. PlayerInputの設定
    4. 2-4. 移動速度を調整する
    5. 2-5. 動作確認
  3. 3. プレイヤーをジャンプさせる
    1. 3-1. ジャンプ用のアクションを追加する
    2. 3-2. スクリプトにジャンプ処理を追加する
    3. 3-3. PlayerInputの設定
    4. 3-4. ジャンプ速度を調整する
    5. 3-5. 動作確認
  4. 4. 連続ジャンプを防止する
    1. 4-1. フラグを使ってジャンプ回数を制限する
    2. 4-2. 地面にいるときだけジャンプできるようにする
    3. 4-3. 地面との接触を判定する
    4. 4-4. 地面のオブジェクトにタグを設定する
    5. 4-5. 動作確認
  5. 5. 敵を踏んで倒せるようにする
    1. 5-1. 敵との接触を判定する
    2. 5-2. 敵を踏んだかどうかを判定する
    3. 5-3. 敵のオブジェクトにタグを設定する
    4. 5-4. プレイヤーが回転しないようにする
    5. 5-5. 動作確認
  6. 6. 敵に当たったらダメージを受ける
    1. 6-1. プレイヤーのHPを管理する
    2. 6-2. ダメージを受ける処理を追加する
    3. 6-3. 敵にぶつかったときにダメージを受ける
    4. 6-4. 敵がプレイヤーにダメージを与える
    5. 6-5. HPの値を設定する
    6. 6-6. 動作確認
  7. 7. 敵を踏んだときに跳ねる
    1. 7-1. 敵を踏んだときに跳ねる処理を追加する
    2. 7-2. 跳ねる力を調整する
    3. 7-3. Inspector で bounceForce の値を調整する
    4. 7-4. 動作確認
  8. 8. まとめ
    1. 今回実装した内容の振り返り
    2. 次回の記事について
  9. おすすめのUnityアセット2Dアクションゲーム開発をもっと簡単に!
    1. Corgi Engine とは?
    2. Corgi Engine を使うメリット
    3. こんな人におすすめ!
    4. 今すぐ Corgi Engine を試してみよう!
  10. よくある質問(FAQ)
    1. 関連記事:

1. はじめに

Unityを使って2Dアクションゲームを作ってみたいけど、「どうやってプレイヤーを動かすの?」と思っていませんか?この記事では、Unity初心者向けにプレイヤーの移動やジャンプ、敵を倒す仕組みをわかりやすく解説します。


2Dアクションゲームでは、プレイヤーがスムーズに動けることが大切です。今回の記事では、以下のアクションを実装していきます。

プレイヤーの移動(キーボード入力で動かせるようにする)
ジャンプ(スペースキーでジャンプできるようにする)
敵を倒す(敵を踏むと倒せる仕組みを作る)
ダメージを受ける(敵に当たったときにHPを減らす)
敵を踏んだときに跳ねる(スーパーマリオのようなジャンプを実装)


また、Unityの**新しい入力システム(Input System)**を使って、キーボードやコントローラーの操作を簡単に設定する方法も紹介します。

この記事を読めば、2Dアクションゲームの基本的なプレイヤー操作をスムーズに作れるようになります!
それでは、さっそくプレイヤーを動かしてみましょう!




2. プレイヤーを移動させる

まずは、プレイヤーがキーボード入力で左右に動けるようにしていきましょう。
Unityの新しい入力システム 「Input System」 を使うと、簡単にキーボードやコントローラーの操作を設定できます。


2-1. Input Systemを導入する

Unityには 「旧入力システム (Input.GetAxis)」「新入力システム (Input System)」 の2種類がありますが、今回は新しい Input System を使います。
このシステムを導入することで、キーボードやゲームパッドの入力を柔軟に設定できます。

① Input Systemをインストールする

  1. Unityのメニューから WindowPackage Manager を開きます。
  2. Unity Registry を選択し、検索ボックスに Input System と入力します。
  3. Input System パッケージを見つけたら Install をクリックします。
  4. インストールが完了したら、Unityを再起動してください。

② PlayerオブジェクトにPlayerInputを追加する

  1. Hierarchy(ヒエラルキー)Player オブジェクトを選択します。
  2. Inspector(インスペクター)Add Component をクリックし、PlayerInput を追加します。
  3. PlayerInputCreate Actions ボタンをクリックします。
  4. InputAction の保存先を指定し、新しく Actions フォルダを作成して保存します。

これで、キーボードやコントローラーの入力を受け取る準備ができました!


2-2. 移動スクリプトを作成する

次に、プレイヤーが WASDキー で移動できるように、スクリプトを作成していきます。

① スクリプトを作成する

  1. Project(プロジェクト)ウィンドウ を開きます。
  2. Assets フォルダ内で 右クリック → CreateC# Script を選択します。
  3. スクリプトの名前を Player に変更します。
  4. 作成した Player スクリプトを Playerオブジェクトにドラッグ&ドロップ してアタッチします。

② スクリプトを編集する

Player スクリプトを開き、以下のコードを入力してください。

using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
    [SerializeField, Header("移動速度")]
    public float moveSpeed = 5f;

    // 入力された方向を格納する変数
    private Vector2 inputDirection;

    // 移動用のRigidbody2D
    private Rigidbody2D rigid;

    void Start()
    {
        // PlayerのRigidbody2Dコンポーネントを取得する
        rigid = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        Move();
    }

    private void Move()
    {
        // プレイヤーが入力した方向に移動速度分の力を加える
        rigid.velocity = new Vector2(inputDirection.x * moveSpeed, rigid.velocity.y);
    }

    public void OnMove(InputAction.CallbackContext context)
    {
        // 移動方向の入力情報を取得
        inputDirection = context.ReadValue<Vector2>();
    }
}

2-3. PlayerInputの設定

スクリプトを実装したら、Unity側の PlayerInput の設定を行いましょう。

① Behaviorの設定

  1. Player オブジェクトを選択します。
  2. InspectorPlayerInput を探し、Behavior の項目を Invoke Unity Events に変更します。

② イベントの設定

  1. PlayerInputEvents タブ を開きます。
  2. Move のところに Player オブジェクトをドラッグ&ドロップ します。
  3. No FunctionPlayerOnMove を選択します。

2-4. 移動速度を調整する

最後に、移動速度を調整して、実際に動かしてみましょう。

  1. Player オブジェクトを選択します。
  2. InspectorPlayer スクリプトの Move Speed に値を設定します。(例:5
  3. Play ボタンを押して、WASDキーで移動できるか確認しましょう!

2-5. 動作確認

WASDキーを押すと、プレイヤーが移動するか?
速度を調整すると、移動スピードが変わるか?
エラーが出ていないか?

以上の設定が完了すれば、プレイヤーがスムーズに移動できるようになります!
次は ジャンプ機能 を追加していきましょう!




3. プレイヤーをジャンプさせる

プレイヤーがジャンプできるようにして、アクションゲームらしくしていきましょう!
今回は スペースキーを押すとジャンプ できるようにしていきます。


3-1. ジャンプ用のアクションを追加する

まずは、Input System にジャンプ用のアクションを設定します。

① InputActionを編集する

  1. Project ウィンドウで 前回作成した Input Action ファイル を開きます。
  2. Player を選択し、Actions+ ボタンをクリックします。
  3. 新しいアクションの名前を Jump に変更 します。

② キーを設定する

  1. Jump の下にある No Binding を選択します。
  2. 右側の Path のボタン(参画マーク) をクリックします。
  3. 一覧から KeyboardBy LocationSpace を選択 します。
  4. Save Asset をクリックして保存 します。

これで、スペースキーがジャンプ用のボタンとして設定されました!


3-2. スクリプトにジャンプ処理を追加する

次に、プレイヤーがジャンプするスクリプトを作成していきます。

① ジャンプ用の変数を追加

Player スクリプトを開き、以下のコードを Start メソッドの上に追加します。

[SerializeField, Header("ジャンプ力")]
private float jumpSpeed = 10f;

jumpSpeed の値を調整することで、ジャンプの高さを変更できます。

② ジャンプ用の関数を追加

次に、OnJump という関数を作成し、プレイヤーがジャンプできるようにします。

public void OnJump(InputAction.CallbackContext context) 
{
if (!context.performed)
{
return;
}

rigid.AddForce(Vector2.up * jumpSpeed, ForceMode2D.Impulse);
}

context.performed で、ジャンプキーが押されたタイミングだけ処理を実行 します。
rigid.AddForce(Vector2.up * jumpSpeed, ForceMode2D.Impulse); で、上方向に力を加えてジャンプさせます。


3-3. PlayerInputの設定

スクリプトを書いたら、Unity側でジャンプのイベントを設定 します。

  1. Player オブジェクトを選択します。
  2. InspectorPlayerInputEvents タブを開きます。
  3. Jump+ ボタンをクリックします。
  4. Player オブジェクトを Jump の欄に ドラッグ&ドロップ します。
  5. No FunctionPlayerOnJump を選択します。

これで、スペースキーを押したときに OnJump 関数が呼び出されるようになります!


3-4. ジャンプ速度を調整する

  1. Player オブジェクトを選択します。
  2. InspectorPlayer スクリプトの Jump Speed に値を設定します。
  3. 例えば 10 に設定すると、ちょうどよくジャンプできるはずです。

3-5. 動作確認

スペースキーを押すと、プレイヤーがジャンプするか?
ジャンプ速度を調整すると、高さが変わるか?
エラーが出ていないか?

これで、プレイヤーがジャンプできるようになりました!
しかし、このままだと無限にジャンプができてしまうので、次は 「連続ジャンプを防止する」 方法を実装していきます!




4. 連続ジャンプを防止する

現状では、プレイヤーは空中でも何度でもジャンプできてしまいます。
これを防ぐために、「地面にいるときだけジャンプできる」ように制御を加えます。


4-1. フラグを使ってジャンプ回数を制限する

地面にいるかどうか を判定するために、bool 型の変数を使います。

① 変数を追加する

Player スクリプトを開き、以下の変数を追加します。

private bool isGrounded;

この isGroundedtrue にすると「地面にいる」、false にすると「空中にいる」と判定します。


4-2. 地面にいるときだけジャンプできるようにする

① OnJump 関数を修正

次に、OnJump 関数を修正し、「isGrounded が true のときだけジャンプできる」ようにします。

public void OnJump(InputAction.CallbackContext context) 
{
if (!context.performed || !isGrounded)
{
return;
}

rigid.AddForce(Vector2.up * jumpSpeed, ForceMode2D.Impulse);
isGrounded = false; // ジャンプしたら「空中にいる」状態にする
}

!isGrounded の条件を追加することで、空中ではジャンプできなくなります


4-3. 地面との接触を判定する

プレイヤーが地面に触れたら isGroundedtrue にする処理を追加します。

OnCollisionEnter2D を追加

プレイヤーが Floor タグのオブジェクトに触れたときに、isGroundedtrue にします。

private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Floor"))
{
isGrounded = true;
}
}

これで、プレイヤーが地面 (Floor タグがついたオブジェクト) に着地したら、再びジャンプできるようになります。


4-4. 地面のオブジェクトにタグを設定する

このスクリプトを正しく動かすために、地面 (Floor) に タグ を設定します。

Floor にタグを追加する

  1. Hierarchy で地面のオブジェクトを選択します。(例: Ground など)
  2. InspectorTagFloor に設定 します。
    • Tag がない場合は Add Tag... から作成できます。

4-5. 動作確認

スペースキーを押してジャンプできるか?
空中ではジャンプできないか?
地面に着いたら再びジャンプできるか?

これで、「地面にいるときだけジャンプできる」ようになりました!
次は 「敵を踏んで倒せるようにする」 仕組みを作っていきます!




5. 敵を踏んで倒せるようにする

アクションゲームでは、敵を踏んで倒す 仕組みがよくありますよね。
今回は、プレイヤーが敵を上から踏んだら倒せる ようにスクリプトを実装していきます。


5-1. 敵との接触を判定する

まず、プレイヤーが敵 (Enemy タグのついたオブジェクト) に触れたことを判定できるようにします。

OnCollisionEnter2D を追加

Player スクリプトに以下のコードを追加します。

private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Floor"))
{
isGrounded = true;
}

if (collision.gameObject.CompareTag("Enemy"))
{
HitEnemy(collision.gameObject);
}
}
  • 地面 (Floor) に触れたらジャンプ可能にする
  • 敵 (Enemy) に触れたら HitEnemy() を呼び出す

5-2. 敵を踏んだかどうかを判定する

次に、プレイヤーが 敵を踏んだら倒せるようにする ための処理を追加します。

HitEnemy メソッドを作成

Player スクリプトに以下のコードを追加します。

private void HitEnemy(GameObject enemy) 
{
float playerBottom = transform.position.y - (transform.localScale.y / 2.0f);
float enemyTop = enemy.transform.position.y + (enemy.transform.localScale.y / 2.0f);

if (playerBottom >= enemyTop)
{
Destroy(enemy); // 敵を倒す
}
}

この処理のポイント

プレイヤーの底 (playerBottom) の座標を取得
敵の上 (enemyTop) の座標を取得
プレイヤーの底が敵の上より下であれば、敵を倒す (Destroy)


5-3. 敵のオブジェクトにタグを設定する

このスクリプトを正しく動かすために、敵 (Enemy) にタグを設定 します。

Enemy にタグを追加する

  1. Hierarchy で敵のオブジェクト (Enemy) を選択します。
  2. InspectorTagEnemy に設定 します。
    • Tag がない場合は Add Tag... から作成できます。

5-4. プレイヤーが回転しないようにする

敵に触れた際に、プレイヤーが不自然に回転してしまうことがあります。
これを防ぐために、Rigidbody2D の回転を固定 します。

Freeze Rotation を設定する

  1. Player オブジェクトを選択します。
  2. InspectorRigidbody2D を開きます。
  3. Freeze Rotation (Z) にチェックを入れる

5-5. 動作確認

プレイヤーが敵を踏んだときに消えるか?
横からぶつかると倒せないか?
プレイヤーが回転しないか?

これで、敵を踏むと倒せるアクション が完成しました!
次は、敵に当たるとダメージを受けるようにする 仕組みを作っていきましょう!




6. 敵に当たったらダメージを受ける

アクションゲームでは、敵に当たるとプレイヤーがダメージを受ける 仕組みが重要です。
今回は、プレイヤーが 敵に接触したときにHPが減る処理 を実装していきます。


6-1. プレイヤーのHPを管理する

まず、プレイヤーに HP(体力) を持たせて、ダメージを受ける処理を追加します。

① HPの変数を追加

Player スクリプトに以下の変数を追加します。

[SerializeField, Header("体力")]
private int hp = 10;

SerializeField を使うことで、Inspector からHPの値を調整 できるようになります。
例えば、HPを 10 に設定すれば 10回ダメージを受けるとゲームオーバー になります。


6-2. ダメージを受ける処理を追加する

次に、プレイヤーが敵 (Enemy タグ) に当たったときに HPを減らす メソッドを作成します。

Damage メソッドを追加

Player スクリプトに以下のコードを追加します。

public void Damage(int damage) 
{
hp = Mathf.Max(hp - damage, 0);
Debug.Log("残りHP: " + hp);
}
  • Mathf.Max(hp - damage, 0) を使うことで、HPが0以下にならないように制御 しています。
  • Debug.Log("残りHP: " + hp); を追加すると、 Unity の Console に HP の減少が表示される ので、動作確認がしやすくなります。

6-3. 敵にぶつかったときにダメージを受ける

プレイヤーが敵 (Enemy) に触れたら Damage メソッドを呼び出す ようにします。

HitEnemy メソッドを修正

Player スクリプトの HitEnemy メソッドを修正し、敵の上から踏んだか、それ以外で当たったかを判定 します。

private void HitEnemy(GameObject enemy) 
{
float playerBottom = transform.position.y - (transform.localScale.y / 2.0f);
float enemyTop = enemy.transform.position.y + (enemy.transform.localScale.y / 2.0f);

if (playerBottom >= enemyTop)
{
Destroy(enemy); // 敵を倒す
}
else
{
enemy.GetComponent<Enemy>().PlayerDamage(this);
}
}
  • プレイヤーが敵を踏んだ場合Destroy(enemy); で敵を消す。
  • 横や下からぶつかった場合PlayerDamage(this); でダメージを受ける。

6-4. 敵がプレイヤーにダメージを与える

敵 (Enemy) にも 攻撃力の概念 を追加し、プレイヤーにダメージを与えられるようにします。

Enemy スクリプトを修正

Enemy スクリプトを開き、以下のコードを追加します。

[SerializeField, Header("攻撃力")]
private int attack = 5;

public void PlayerDamage(Player player)
{
player.Damage(attack);
}
  • attack の値を設定することで、敵の攻撃力を変更できる ようになります。
  • PlayerDamage(Player player)プレイヤーの Damage() メソッドを呼び出し、HPを減少 させます。

6-5. HPの値を設定する

スクリプトが完成したら、Inspector で HPや攻撃力を設定 します。

① プレイヤーのHPを設定

  1. Player オブジェクトを選択します。
  2. InspectorPlayer スクリプト内で HP の値を 10 に設定します。

② 敵の攻撃力を設定

  1. Enemy オブジェクトを選択します。
  2. InspectorEnemy スクリプト内で 攻撃力 の値を 5 に設定します。

6-6. 動作確認

敵を踏むと倒せるか?
横や下からぶつかると、HPが減るか?
Console に「残りHP: ○」と表示されるか?
HP が 0 になってもエラーが出ないか?

これで、プレイヤーが敵にぶつかるとダメージを受ける仕組み が完成しました!
次は 「敵を踏んだときに跳ねる」 仕組みを追加して、より楽しいアクションにしていきましょう!




7. 敵を踏んだときに跳ねる

敵を踏んで倒したとき、プレイヤーが少しジャンプする ようにすると、より気持ちの良いアクションになります。
「スーパーマリオ」のような、敵を踏んだら跳ねる仕組みを作っていきましょう!


7-1. 敵を踏んだときに跳ねる処理を追加する

まずは、敵を踏んだときに上方向へジャンプする処理 を追加します。

HitEnemy メソッドを修正

Player スクリプトの HitEnemy メソッドを修正し、敵を踏んだときに跳ねる処理を追加 します。

private void HitEnemy(GameObject enemy) 
{
float playerBottom = transform.position.y - (transform.localScale.y / 2.0f);
float enemyTop = enemy.transform.position.y + (enemy.transform.localScale.y / 2.0f);

if (playerBottom >= enemyTop)
{
Destroy(enemy); // 敵を倒す
rigid.AddForce(Vector2.up * jumpSpeed, ForceMode2D.Impulse); // 跳ねる
}
else
{
enemy.GetComponent<Enemy>().PlayerDamage(this);
}
}

追加した処理のポイント

プレイヤーの位置が敵の上かどうかを判定
敵を踏んだ場合 (Destroy(enemy)) にプレイヤーを跳ねさせる
跳ねる処理 (rigid.AddForce(Vector2.up * jumpSpeed, ForceMode2D.Impulse);) を追加


7-2. 跳ねる力を調整する

敵を踏んだときの 跳ねる高さ を調整できるように、bounceForce という変数を作成 します。

bounceForce 変数を追加

Player スクリプトの Start メソッドの上に以下を追加します。

[SerializeField, Header("踏んだ時の跳ねる力")]
private float bounceForce = 7f;

HitEnemy メソッドを修正

rigid.AddForce()jumpSpeedbounceForce に変更します。

private void HitEnemy(GameObject enemy) 
{
float playerBottom = transform.position.y - (transform.localScale.y / 2.0f);
float enemyTop = enemy.transform.position.y + (enemy.transform.localScale.y / 2.0f);

if (playerBottom >= enemyTop)
{
Destroy(enemy); // 敵を倒す
rigid.AddForce(Vector2.up * bounceForce, ForceMode2D.Impulse); // 跳ねる
}
else
{
enemy.GetComponent<Enemy>().PlayerDamage(this);
}
}

7-3. Inspector で bounceForce の値を調整する

スクリプトが完成したら、Inspector で bounceForce の値を変更 できるようになります。

bounceForce を設定

  1. Player オブジェクトを選択します。
  2. InspectorPlayer スクリプトの 踏んだ時の跳ねる力 (bounceForce) の値を調整します。
    • 7~10 くらいの値がおすすめ!

7-4. 動作確認

敵を踏むと倒せるか?
踏んだときにプレイヤーが跳ねるか?
bounceForce の値を変更すると、跳ねる高さが変わるか?
横から当たったときは跳ねないか?

これで、「敵を踏んだときに跳ねるアクション」 が完成しました!
次は、「ゲームオーバーの処理」「スコアシステム」 などを追加して、ゲームをさらに楽しくしていきましょう!




8. まとめ

この記事では、Unityで2Dアクションゲームのプレイヤーの基本アクション を実装しました!
プレイヤーの移動・ジャンプ・敵との接触処理を加えることで、よりアクションゲームらしくなりましたね。


今回実装した内容の振り返り

プレイヤーの移動を実装Input System を使ってWASDキーで動けるようにした)
プレイヤーのジャンプを実装(スペースキーでジャンプ可能)
連続ジャンプを防止(地面にいるときだけジャンプできるようにした)
敵を踏んで倒せるようにした(プレイヤーが敵より上にいる場合のみ倒せる)
敵に当たるとダメージを受けるようにした(HPを減少させ、ゲームの緊張感をUP)
敵を踏んだときに跳ねるようにした(スーパーマリオのようなアクションを実装)

これらの仕組みを組み合わせることで、よりスムーズで楽しいアクションゲームが作れるようになります。


次回の記事について

次の記事では、HPのUIやゲームオーバー処理 を追加して、ゲームとしての完成度を上げていきます!

例えば、次のような機能を実装していきます。

🎯 スコアを追加して、敵を倒すたびに加算する
🎯 HPが0になったらゲームオーバー画面を表示する
🎯 プレイヤーが画面外に落ちたらやり直しになる処理を追加する

引き続き、2Dアクションゲームを一緒に作っていきましょう!


これで、プレイヤーの基本的なアクションの実装は完了 です!
次回もお楽しみに! 🎮✨




おすすめのUnityアセット2Dアクションゲーム開発をもっと簡単に!

この記事で、2Dアクションゲームの基本的なプレイヤーの動きを実装 しましたが、実際にゲームを作っていくと、こんな悩みが出てきませんか?

「もっとスムーズなプレイヤーの動きを作りたい…」
「当たり判定やアニメーションの設定が面倒…」
「敵のAIや攻撃の仕組みを作るのが大変…」

そんなときにオススメなのが、「Corgi Engine – 2D + 2.5D Platformer」 です! 🎮✨
👉 Corgi Engine – 2D + 2.5D Platformer


Corgi Engine とは?

Corgi Engine は、Unityで本格的な 2Dアクションゲーム(プラットフォーマー) を素早く作れるアセットです。
すでに 動きの滑らかなキャラクターコントローラー敵のAI、武器、エフェクト などが組み込まれているので、コードをゼロから書かなくても プロ並みの2Dゲーム を作れます!


Corgi Engine を使うメリット

圧倒的にスムーズなプレイヤー操作

Corgi Engine には 緻密に調整されたプレイヤーコントローラー が含まれています。
移動・ジャンプ・ダッシュ・壁ジャンプ・はしご移動など、すぐに使えるアクション が豊富!
「キャラクターの動きがぎこちない…」という悩みが一気に解決します。

敵のAIや武器システムも簡単に実装

「敵の行動パターンを作るのが大変…」という方も安心!
Corgi Engineには、すでに敵AIや攻撃パターンが組み込まれているので、エディター上で調整するだけ で敵の動きを作れます。
銃や近接武器も設定可能なので、シューティング要素を追加するのも簡単です。

2Dだけでなく2.5Dゲームも作れる!

通常の2Dアクションだけでなく、2.5D(奥行きのあるアクション) にも対応。
「メトロイドヴァニア」や「探索型のプラットフォーマー」も手軽に開発できます!

豊富なデモシーンで学びながら開発できる

アセットには完成度の高いデモシーンが多数含まれており、「どう作ればいいの?」と迷ったときに参考になります。
デモをカスタマイズすれば、短時間でオリジナルのゲームを作ることも可能です!


こんな人におすすめ!

ゼロから2Dアクションゲームを作るのは大変だと感じる人
プロレベルのスムーズなキャラクター操作を実装したい人
プレイヤー操作、敵AI、武器システムを素早く導入したい人
コードを少なくして、エディター中心で開発したい人


今すぐ Corgi Engine を試してみよう!

Unityで2Dアクションゲームを作るなら、Corgi Engine を導入することで 開発スピードが大幅にアップ します!
アセットストアで詳細をチェックして、最高のアクションゲームを作りましょう!

👉 Corgi Engine – 2D + 2.5D Platformer をチェック 🎮✨


よくある質問(FAQ)

Q
Playerが動かないのですが、原因は何ですか?
A

Input System の設定や Behavior の変更が正しく適用されているか確認してください。また、スクリプトが Player オブジェクトにアタッチされているかもチェックしましょう。

Q
ジャンプが無限にできてしまうのですが?
A

OnCollisionEnter2DbJump の状態を適切に更新しているか確認してください。また、地面のオブジェクトに Floor タグを設定しているかもチェックしましょう。

Q
敵を踏んでも消えません。どうすればいいですか?
A

HitEnemy メソッドの条件分岐が正しいか確認してください。if (transform.position.y - (halfScaleY - 0.1f) >= enemy.transform.position.y + (enemyHalfScaleY - 0.1f)) の計算を見直すと改善するかもしれません。

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