CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】キャラクターを動かす移動方法解説【初心者向け】
こんにちは!Unityでのキャラクターの移動方法で困った経験はありませんか?
移動方法にはいくつか種類があるのでどれを使えばいいか迷ってしまうんですよね。
本記事では、物理挙動が扱えるrigidbodyを使った移動方法について解説していきます!
キャラクターのrigidbodyを使った移動方法
まずはキャラクターを動かすためにPlaneで地面を作っておきましょう。
地面を作る方法については下の記事で解説して詳しく解説しています。
キャラクターにrigidbodyを設定
今回は移動させるキャラクターとして3Dオブジェクトのカプセルを使います。
GameObject→3D Object→Capsuleを選択します。
このようにカプセルが作成されますので、こちらを動かすキャラクターとして設定していきます。
なお、見やすいようにマテリアルの色を変更しています。
マテリアルの変更方法については下の記事で解説しています。
まずはキャラクターにrigidbodyを設定しましょう。
CapsuleのインスペクターからAdd Component→Rigidbodyを選びます。
Rigidbodyコンポーネントがつきました。
ここで、ConstraintsのFreeze Rotationの全てにチェックを入れておきましょう。
これはオブジェクトの回転を無効にする項目です。
今回は移動だけで回転はさせないので設定しておきます。
キャラクターを操作するスクリプトを作成
下のようなスクリプトを作成します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveCapsule : MonoBehaviour
{
Rigidbody rb;
float speed = 3.0f;
void Start()
{
rb = GetComponent<Rigidbody> ();
}
void Update()
{
if(Input.GetKey(KeyCode.UpArrow)){
rb.velocity = transform.forward*speed;
}
if(Input.GetKey(KeyCode.DownArrow)){
rb.velocity = -transform.forward*speed;
}
if(Input.GetKey(KeyCode.RightArrow)){
rb.velocity = transform.right*speed;
}
if(Input.GetKey(KeyCode.LeftArrow)){
rb.velocity = -transform.right*speed;
}
}
}
簡単にプログラムを解説すると、まずStart関数内でRigidbodyコンポーネントを取得してrbに格納しています。
Update関数内で、押された矢印キーによって動かす方向を変えています。
そして最後にrb.velocityにキャラクターの移動速度(3.0f)を代入しています。
これにより、プレーヤーのキー入力によってキャラクターの移動を操作することができます。
このスクリプトをCapsuleオブジェクトにドラッグアンドドロップします。
このように、押した矢印キーの方向にキャラクターを動かすことができるようになりました。
その他の移動方法
今回はRigidbodyを使って移動させる方法を紹介しました。
ほかにもキャラクターを移動させる方法はいくつかあります。
例えばtransformの値を直接変更することで瞬間移動させる、キャラクターコントローラーを使って移動させるなどの方法があります。
各移動方法の詳しい設定については下の記事が参考になります。
2Dキャラクターを動かすアニメーション作成方法
ここでは2Dのキャラクターを動かすアニメーションの作成方法を解説します。
このように歩いているように見えるアニメーションを作ることができます。
アニメーションを作成するためには2つ以上の画像を用意するか、またはスプライトシートが必要です。
スプライトシートとはこのように小さな画像がタイル状に並んだ画像のことです。
スプライトシートは分割することで複数の画像素材として扱うことができます。
スプライトシートを分割する方法については下の記事が参考になります。
本記事では下のように画像素材が用意できたところからアニメーション作成方法を解説していきます。
下の赤線の二つのイラストを交互に表示することによって、歩いているように見えるアニメーションを作ります。
まず、一つ目の画像をドラッグアンドドロップでシーンに配置します。
配置したオブジェクトを選択し、Window→Animation→Animationをクリックします。
下のようなAnimationタブが開くので、Createボタンを押し保存します。
続いてアニメーションの中身を設定していきます。
下のように最初に表示したい画像をドラッグアンドドロップでタイムラインの0:00付近に持ってきます。
左にある右向き矢印アイコンをクリックすると画像が表示できます。
同じようにして、画像が交互になるようにタイムライン上に配置しましょう。
下のように1枚目、2枚目、1枚目の3つおけばOKです。
これでアニメーションの設定は完了です。
プログラムを実行して、Sceneビューから設定したアニメーションが確認できます。
以上が2Dキャラクターのアニメーションを設定する手順です!
キャラクターコントローラーのおすすめアセット
Starter Assets – Third Person Character Controller | URP
こちらは三人称視点でキャラクターを簡単に移動させることができる無料アセットです。
Unity公式から提供されています。
一から自分で移動のスクリプトを組むよりも、手っ取り早く移動操作が実現できます。
ちなみに一人称視点のアセットもUnity公式から同じく提供されています。
Easy Character Movement
Easy Character Movementは、ジャンプやクリックした位置まで移動するといった操作が可能になるキャラクターコントローラーのアセットです。
二段ジャンプにも対応しておりさらに踏み込んだ移動操作を実現したい方におすすめのアセットです!
まとめ
以上、キャラクターを動かす移動方法について解説してきました。
キャラクターを動かすスクリプトやアニメーションは必ず必要になってくるので、使えるようになっておきたいですね!