3Dマップでキャラ(プレイヤー)の移動方法とカメラ設定 [Unity]
初期準備
キャラに追尾するカメラを使用する為に、次のアセットのダウンロードを行い、プロジェクトにインポートすることが必要です。
| Standard Assets ※Unityが提供する無償の標準アセットです。 |
個人的には Third Person Camera (25ドル)がおススメです。
※この記事ではStandard Assetsを使用した例をご紹介します。
キャラ及び地面を設定する
今回のキャラは3Dオブジェクトの「キューブ」、地面は「キューブ」または「Terrain(地形)」のどちらかを設定してください。
キャラのキューブはインスペクターにあるタグを「Player」に変更します。
更にキャラのキューブはインスペクターの下部にある「コンポーネントの追加」で[物理][キャラクターコントローラー]を追加します。
カメラの追加
Unityの下部にある[プロジェクト]タブの[Assetes][Standard Assets][Cameras][Prefabs]の「MultipurposeCameraRig」を「ヒエラルキー」へドロップします。
さきほど、キャラのキューブのタグを「Player」にしたので自動的にそのキューブをカメラが追尾するようになります。
スクリプトを作成する
C#スクリプトを作成します。名前は「playerController」とします。
スクリプト(ソースコード)
WASDキーでキャラを移動。スペースキーでジャンプします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class playerController : MonoBehaviour
{
private Vector3 moveDirection;
private Vector3 addForceDownPower = Vector3.zero;
private CharacterController controller;
private float speed; // 移動速度
private float rotateSpeed; // 回転速度
private float gravity; // 重力
private float jumpPower; // ジャンプ力
// Start is called before the first frame update
void Start()
{
this.rotateSpeed = 60.0f;
this.gravity = 10f;
this.jumpPower = 6;
this.speed = 6.0f;
this.controller = this.gameObject.GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
this.addForceDownPower = Vector3.zero;
if (controller.isGrounded)
{
transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed * Time.deltaTime, 0);
this.moveDirection = transform.forward * speed * Input.GetAxis("Vertical");
if (Input.GetButtonDown("Jump"))
{
this.addForceDownPower = Vector3.zero;
moveDirection.y = this.jumpPower;
}
}
else
{
this.moveDirection.y -= this.gravity * Time.deltaTime;
}
controller.Move(this.moveDirection * Time.deltaTime + this.addForceDownPower);
}
}
スクリプトをアタッチ
スクリプトをキャラのキューブの「ゲームオブジェクト」へドロップ。
後はゲームを実行して遊んでみましょう。
調整
キャラのキューブに追加した「キャラクターコントローラー」の半径などの設定、スクリプトの移動速度、回転などは各自で調整して下さい。
参考サイト
CharacterControllerをつかってプレーヤーを動かす
UnityのCharacterControllerの接地が判断出来ない時にスクリプトを使う
※今回のスクリプトは上記2サイトのコードの組み合わせ+αです。
関連記事
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









