Unityでキャラクターをジャンプさせる方法【初心者向け】

初心者向けにUnityでキャラクターをジャンプさせる方法を解説しています。2D,3Dゲームを作る中でジャンプさせることがあります。実際にプログラムを書きながらジャンプ出来るようにしているので、ぜひご覧ください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、Unityでキャラクターをジャンプさせる方法について解説していきたいと思います。

キャラクターを動かすとなると難しいイメージを抱くかもしれませんが、Unityにはキャラクターを簡単に動かすための機能が備わっています。

 

なお、本記事はTechAcademyのUnity入門オンライン講座の内容をもとにしています。

 

田島悠介

今回は画面内のキャラクターをジャンプさせるための方法について説明するよ。

大石ゆかり

田島メンター!!ジャンプにはどんな機能を使うんですか〜?

田島悠介

まずオブジェクトに「CharacterController」と「RigidBody」のコンポーネントを追加しよう。それからジャンプさせるためのスクリプトを追加して実際の動作を確認するよ。

大石ゆかり

はい!お願いします!

 

ジャンプさせる主な方法

1. CharacterControllerを使用する

読んで名の通りキャラクターをコントロールするための関数がCharacterControllerです。よく使われる手法で、物理演算を行わないようなゲームで使用されます。実装も非常に簡単で、何個か設定をして

CharacterController.Move(Vector3);

と呼び出すだけでキャラクターが動きます。

 

2. RigidBodyを使用する

前述の「CharacterController」と違い物理演算を使用してキャラクターを動かします。物理ゲームで主人公を動かしたい時などに使用します。

RigidBody.velocity = Vector3;

とすれば物理的な速度が与えられてキャラクターが動きます。

 

3. transform.positionを利用する

あまりお勧めはしませんが、キャラクターの座標を数値で指定して動かす方法もあります。

Update関数内でtransformを徐々に変化させることによって、動いているように見せる技法です。ただ、物理演算やコライダーを使用するゲームの場合、思わぬバグが発生する可能性があるため、使いどころを考えるようにしましょう。

 

実際にジャンプさせてみる

今回は「CharacterController」を使用して、スペースキーを押すとジャンプするプログラムを作ってみたいと思います。

ジャンプさせるCube、ジャンプさせるためのフィールドを作成していきましょう。

ジャンプさせるCubeには「CharacterController」と「RigidBody」をコンポーネントするようにしてください。

unity_11_01

次に処理を作成していきます。

スクリププトを作成して、cubeにコンポートしましょう。

using UnityEngine;
using System.Collections;

public class jumpSample : MonoBehaviour {

  private CharacterController controller;
  private Vector3 moveDirection;

    void Start () {
    controller = GetComponent<CharacterController>();
    }

    void Update () {
    if (controller.isGrounded) { //地面についているか判定
      if (Input.GetMouseButtonDown(0)) {
      moveDirection.y = 20; //ジャンプするベクトルの代入
      }
    }

    moveDirection.y -= 10 * Time.deltaTime; //重力計算
    controller.Move(moveDirection * Time.deltaTime); //cubeを動かす処理
    }
}

unity_11_02

上の画像のようにジャンプしてら成功です。

 

田島悠介

「CharacterController」と「RigidBody」はどちらも「Add Component」の「Physics」から追加できるよ。

大石ゆかり

スクリプトはどこから追加したらいいんですか?

田島悠介

Assetsフォルダを右クリックして「Create」から該当のスクリプトを選択しよう。オブジェクトへの追加はInspectorタブにドラッグ&ドロップすればOKだよ。

 

[PR] Unityを使ったゲーム開発で挫折しない学習方法を動画で公開中

まとめ

今回はキャラクターをジャンプさせる方法について解説していきました。今回解説したCharacterControllerを使用すれば、ジャンプの他にも移動をさせたりその他の細かい設定を行うことができます(どの高さの段差なら登れるかなど)。是非理解を深めていきましょう。

 

田島悠介

オブジェクトを操作することはできたかな?

大石ゆかり

はい!3Dオブジェクトにはこうやって物理的な属性を入れていくんですね。

田島悠介

今回使用した「CharacterController」と「RigidBody」はオブジェクトを動かす際に頻繁に使用するので機能をよく覚えておこう。

大石ゆかり

分かりました。ありがとうございます!

 

[お知らせ]TechAcademyではオリジナルゲームアプリが公開できるUnityオンラインブートキャンプを開催しています。現役Unityエンジニアのサポートで効率的に学びたい場合はご検討ください。