【Unity】キャラクターを動かす移動方法解説【初心者向け】

URLをコピーする
URLをコピーしました!

CGBoxの一部の記事にはアフィリエイト広告が含まれております。

こんにちは!Unityでのキャラクターの移動方法で困った経験はありませんか?

移動方法にはいくつか種類があるのでどれを使えばいいか迷ってしまうんですよね。

本記事では、物理挙動が扱えるrigidbodyを使った移動方法について解説していきます!

目次

キャラクターのrigidbodyを使った移動方法

まずはキャラクターを動かすためにPlaneで地面を作っておきましょう。

地面を作る方法については下の記事で解説して詳しく解説しています。

あわせて読みたい
【Unity】地面をPlaneで簡単に作ってみよう こんにちは!Unityで地面を作るときどんな方法で作っていますか? Terrainを使ったり、アセットを使ったりなど色々な方法がありますが Planeを使うと最も簡単に地面を作...

キャラクターにrigidbodyを設定

今回は移動させるキャラクターとして3Dオブジェクトのカプセルを使います。

GameObject→3D Object→Capsuleを選択します。

このようにカプセルが作成されますので、こちらを動かすキャラクターとして設定していきます。

なお、見やすいようにマテリアルの色を変更しています。

マテリアルの変更方法については下の記事で解説しています。

あわせて読みたい
【Unity】オブジェクトのマテリアルを変更する方法 こんにちは!Unityで作成したオブジェクトはデフォルトのままだと見た目が少し味気ないですよね。 色を変えたくても、設定方法が分からない!となることがあるかと思い...

まずはキャラクターに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の値を直接変更することで瞬間移動させる、キャラクターコントローラーを使って移動させるなどの方法があります。

各移動方法の詳しい設定については下の記事が参考になります。

3DCG school
【Unity】オブジェクトの移動方法まとめ | 3DCG school Unityでオブジェクトを移動させる方法は様々です。positionを書き換える方法やRigidbodyに力を加える方法など、状況によって使い分ける必要があるため、初心者の方は特に迷...

2Dキャラクターを動かすアニメーション作成方法

ここでは2Dのキャラクターを動かすアニメーションの作成方法を解説します。

このように歩いているように見えるアニメーションを作ることができます。

アニメーションを作成するためには2つ以上の画像を用意するか、またはスプライトシートが必要です。

スプライトシートとはこのように小さな画像がタイル状に並んだ画像のことです。

スプライトシートは分割することで複数の画像素材として扱うことができます。

スプライトシートを分割する方法については下の記事が参考になります。

電脳産物
Unity2D:1枚の画像から複数のスプライトを生成する 簡単な画像ファイルを例にとり1枚の画像から複数のスプライトに分割する方法を解説します。

本記事では下のように画像素材が用意できたところからアニメーション作成方法を解説していきます。

下の赤線の二つのイラストを交互に表示することによって、歩いているように見えるアニメーションを作ります。

まず、一つ目の画像をドラッグアンドドロップでシーンに配置します。

配置したオブジェクトを選択し、Window→Animation→Animationをクリックします。

下のようなAnimationタブが開くので、Createボタンを押し保存します。

続いてアニメーションの中身を設定していきます。

下のように最初に表示したい画像をドラッグアンドドロップでタイムラインの0:00付近に持ってきます。

左にある右向き矢印アイコンをクリックすると画像が表示できます。

同じようにして、画像が交互になるようにタイムライン上に配置しましょう。

下のように1枚目、2枚目、1枚目の3つおけばOKです。

これでアニメーションの設定は完了です。

プログラムを実行して、Sceneビューから設定したアニメーションが確認できます。

以上が2Dキャラクターのアニメーションを設定する手順です!

キャラクターコントローラーのおすすめアセット

Starter Assets – Third Person Character Controller | URP

あわせて読みたい
Starter Assets - ThirdPerson | Updates in new CharacterController package | Essentials | Unity Asset... Get the Starter Assets - ThirdPerson | Updates in new CharacterController package package from Unity Technologies and speed up your game development process. Fi...

こちらは三人称視点でキャラクターを簡単に移動させることができる無料アセットです。

Unity公式から提供されています。

一から自分で移動のスクリプトを組むよりも、手っ取り早く移動操作が実現できます。

ちなみに一人称視点のアセットもUnity公式から同じく提供されています。

あわせて読みたい
StarterAssets - FirstPerson | Updates in new CharacterController package | Essentials | Unity Asset ... Get the StarterAssets - FirstPerson | Updates in new CharacterController package package from Unity Technologies and speed up your game development process. Fin...

Easy Character Movement

あわせて読みたい
Easy Character Movement | Systems | Unity Asset Store Use Easy Character Movement from Oscar Gracián to elevate your next project. Find this & more Systems and templates on the Unity Asset Store.

Easy Character Movementは、ジャンプやクリックした位置まで移動するといった操作が可能になるキャラクターコントローラーのアセットです。

二段ジャンプにも対応しておりさらに踏み込んだ移動操作を実現したい方におすすめのアセットです!

まとめ

以上、キャラクターを動かす移動方法について解説してきました。

キャラクターを動かすスクリプトやアニメーションは必ず必要になってくるので、使えるようになっておきたいですね!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Unityメインの個人開発者。UnityでAIを学習させてみたり、野球ゲームを作ってみたりと色々してました。現在はライターとして、Unityで開発する人の力になる記事が書けるよう奮闘中。

目次
閉じる