Unityちゃんをジャンプさせる方法【アニメーションの遷移(動かし方)】
この記事ではUnityの「Unityちゃんをジャンプさせる方法」について解説します。
上記のように走っている状態から、スペースキーを押すことで
Unityちゃんがジャンプする。
といったようなジャンプの方法。アニメーション遷移方法を解説します。
この記事で学べること
・Unityちゃんをジャンプさせる方法
・アニメーションの遷移方法
エラーが発生したときに役立つ「エラー解決策の一覧」も掲載しています。
困ったときはご確認ください。
疑問点や質問には何でも答えようと思っています。
この記事の不明点はこちらからお問い合わせ下さい。
ではどうぞ。
Unityちゃんのジャンプ設定
Unityちゃんをジャンプさせるために、まず「アニメーション」にジャンプを追加します。
前準備として下記のサイトを参考し、Unityちゃんを「走らせる」状態まで作成してください。
Unityちゃんが走っているアニメーションを作成できたら、そこにジャンプ処理を追加します。
Animatorにジャンプ状態を追加する
Animatorの編集画面を開きます。
Animator画面から右クリックを押下し、コンテキストメニューを表示します。
「Create State」⇒「Empty」を選択し、新しい状態を作成します。
新しく状態を作成できたら、上記のように、状態名を「Jumping」。Motionに「JUMP00」と設定してください。
状態の遷移を追加する
続いて作成した「Jumping」に状態遷移を追加します。
先ほど作成した「Jumping」を右クリックし「Make Transition」を選択。
状態の遷移を表す矢印が表示されるので、「Jumping」から矢印を伸ばして「RUN00F」に接地させてください。
この矢印を設定することで、
「Jumping」が終了すると「RUN00F」に遷移する
という状態の遷移が作成されます。
アニメーション遷移のプログラムを作成する
Animatorにジャンプ遷移を追加できたら、
「スペースボタンを押下するとジャンプする」という処理プログラムを作成します。
プログラムの作成手順
①C# scriptの作成
②ジャンプ遷移処理の設定
③C# scriptをUnityちゃんに適用する
C# scriptの作成
まずはC#のプログラムを生成します。
Assets内で右クリックし「C# script」⇒「Create」を選択します。
新しくC#スクリプトが作成されるので、そのファイル名を「UnityChanController」とリネームします。
作成されたスクリプトをダブルクリックすると、Visual Studioでスクリプトが立ち上がります。
VIsual Studioに表示されたスクリプトを編集し、ジャンプ処理を追加していきましょう。
※Visual Studioが起動しない場合は下記サイト「Visual Studioをエディターとして設定する」をご確認ください。
アニメーション遷移プログラムの作成【走る→ジャンプ】
「スペースボタンを押下するとジャンプする」処理をプログラムで実装します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UnityChanController : MonoBehaviour
{
float jumpForce = 3;
bool isJump, isJumpWait; //ジャンプフラグの設定。Unityちゃんが飛んでいるか否か。
Animator anim; //Unityちゃんのジャンプ設定するためのAnimator
float jumpWaitTimer; //ジャンプ待機時間
// Start is called before the first frame update
void Start()
{
//UntiyちゃんのAnimatorを取得する。
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
// ジャンプ処理
if (Input.GetKeyUp("space")) //スペースキーが押下されたらジャンプする
{
if (!isJump && !isJumpWait)
{
anim.Play("Jumping", 0, 0);//Unityちゃんのジャンプ処理
isJumpWait = true;
jumpWaitTimer = 0.2f;
}
}
// 地面に着地するまで、ジャンプできないようにするための処理
if (isJumpWait)
{
jumpWaitTimer -= Time.deltaTime;
if (0 > jumpWaitTimer)
{
GetComponent<Rigidbody>().velocity = transform.up * jumpForce;
isJumpWait = false;
}
}
}
}
上記のプログラムを先ほど作成したC#スクリプトにそのままコピペしてください。
ジャンプ処理プログラムの解説
上記のプログラムの動作について各ブロックごとに解説します。
ゲームスタート時の処理
下記のvoid Start()はプログラム開始時に実行されるメソッドです。
// Start is called before the first frame update
void Start()
{
//UntiyちゃんのAnimatorを取得する。
anim = GetComponent<Animator>();
}
UnityちゃんのAnimator情報を取得し、anim変数に格納しています。
Animator情報とは前章で設定した「JUMP00」や「Jumping」、「Make Transition」などの情報です。
※C#のメソッドについて詳しく知りたい方はこちら
スペースボタン押下時の処理
下記プログラムはスペースボタン押下時にUnityちゃんをジャンプさせる処理です。
// ジャンプ処理
if (Input.GetKeyUp("space")) //スペースキーが押下されたらジャンプする
{
if (!isJump && !isJumpWait)
{
anim.Play("Jumping", 0, 0);//Unityちゃんのジャンプ処理
isJumpWait = true;
jumpWaitTimer = 0.2f;
}
}
Input.GetKeyUp(“space")と記載することで、スペースボタンが押下されたことを感知、ジャンプ処理をスタートします。
if (!isJump && !isJumpWait)で「ジャンプしていない」かつ「ジャンプ中ではない」時を判定。
anim.Play(“Jumping", 0, 0);でアニメーション情報を"Jumping"に設定することでUnityちゃんがジャンプします。
isJumpWait = true;
jumpWaitTimer = 0.2f;
でジャンプ処理のための変数を設定しています。
ジャンプ中の処理
Unityちゃんが地面に着地するまでジャンプできないように変数を設定します。
// 地面に着地するまで、ジャンプできないようにするための処理
if (isJumpWait)
{
jumpWaitTimer -= Time.deltaTime;
if (0 > jumpWaitTimer)
{
GetComponent<Rigidbody>().velocity = transform.up * jumpForce;
isJumpWait = false;
}
}
作成したジャンプ処理をUnityちゃんに適用する
作成したプログラムをUnityちゃんに適用します。
このプログラムを適用することで、Unityちゃんのジャンプ処理が実行されます。
Assetsにある「UnityChanController」を「Add Component」にドラッグ&ドロップします。
Unityちゃんをジャンプさせてみよう
ではUnityプロジェクトを実行させ、動作を確認してみましょう。
Unity画面上部の再生ボタン(▷)を押下してください。
Unityゲームがスタートします。Unityちゃんが走っているときにスペースキーを押下してください。
すると上記のようにUnityちゃんがジャンプすると思います。
これで走っている状態からジャンプする「アニメーション遷移」の解説は以上です。
Unityちゃん「ジャンプアニメーションの遷移」まとめ
ジャンプアニメーションの遷移方法についてのまとめです。
Unityちゃんのジャンプアニメーションの遷移方法まとめ
①Animatorから新しい状態を作成する。
②「Make Transition」で「ジャンプ」から「走る」に状態を遷移させる。
③C#スクリプトから遷移処理を作成する。
④C#スクリプトをUnityちゃんに適用する。
下記にゲーム開発の完全ガイドを掲載しています。
お時間のある方は是非取り組んでみてください。