ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Unity のキャラクターオブジェクト
Unity 上で「キャラクター」と呼べるものは、ヒエラルキー上の GameObject に 3D モデル + 当たり判定 + アニメーション + 入力処理 + カメラが組み合わさったものです。完成度はピンキリで、Cube に Rigidbody だけ付ければ最低限の「キャラ」として動かせます。
最速で動くキャラ: Capsule
動作確認用の雛形には Unity 標準の Capsule が便利です。
- Hierarchy で右クリック → 3D Object → Capsule
- Inspector で Add Component → Character Controller
- その下に Camera を子オブジェクトとして配置 (1 人称視点)
- 下記の最小スクリプトを追加
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class SimpleMover : MonoBehaviour
{
public float speed = 5f;
public float jumpSpeed = 5f;
public float gravity = -9.81f;
CharacterController cc;
Vector3 velocity;
void Awake() => cc = GetComponent<CharacterController>();
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 move = transform.right * h + transform.forward * v;
cc.Move(move * speed * Time.deltaTime);
if (cc.isGrounded)
{
velocity.y = -1f;
if (Input.GetButtonDown("Jump")) velocity.y = jumpSpeed;
}
velocity.y += gravity * Time.deltaTime;
cc.Move(velocity * Time.deltaTime);
}
}
このまま Play すれば WASD で移動、Space でジャンプができます。本格キャラに置き換えるのは見た目だけなので、まず動かして遊びを確認するのがおすすめ。
本格的なキャラを持ち込む: Asset Store / Mixamo
| 入手元 | 特徴 | 料金 |
|---|---|---|
| Unity Asset Store | キャラ + アニメ + スクリプトのパック多数。Synty Studios の低ポリ系が人気 | 無料〜数十ドル |
| Mixamo (Adobe) | ★ 人型キャラ + 2,500 個以上のモーションが無料、FBX エクスポート | 無料 |
| ReadyPlayerMe | Web カスタマイザでアバター生成、glTF/FBX | 無料 |
| Blender / VRoid Studio で自作 | 完全自由、商用利用も OK (要利用規約確認) | 無料 |
| Sketchfab | 3D モデル共有サイト。CC ライセンス品多数 | 無料〜 |
Mixamo からの導入手順
- mixamo.com に Adobe アカウントでサインイン
- Characters タブで好きなキャラを選択 → Download (FBX for Unity)
- Animations タブで Idle / Walk / Run / Jump を選び、それぞれ Download (Without Skin)
- Unity の Assets フォルダにドラッグ&ドロップ
- Model FBX 選択 → Inspector → Rig → Animation Type = Humanoid → Apply
- 各 Animation FBX も同様に Humanoid 化、Loop が必要なものは Loop Time にチェック
Humanoid Rig と Animator Controller
Humanoid Rig は、Unity 標準の汎用人型ボーン構造です。Mixamo / Asset Store のモデルとアニメーションは Humanoid 同士なら自由に組み合わせ可能 (Mecanim Retargeting)。
アニメーションを切り替えるには Animator Controller を作成し、ステートマシン (Idle ↔ Walk ↔ Run ↔ Jump) を組みます。
using UnityEngine;
public class PlayerAnimator : MonoBehaviour
{
Animator anim;
CharacterController cc;
public float speed = 4f;
void Awake()
{
anim = GetComponent<Animator>();
cc = GetComponent<CharacterController>();
}
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 input = new Vector3(h, 0, v);
float magnitude = Mathf.Clamp01(input.magnitude);
// Animator パラメータに渡す (Blend Tree で Idle ↔ Walk ↔ Run)
anim.SetFloat("Speed", magnitude);
if (input.sqrMagnitude > 0.01f)
{
Quaternion target = Quaternion.LookRotation(input);
transform.rotation = Quaternion.Slerp(transform.rotation, target, 10f * Time.deltaTime);
cc.SimpleMove(transform.forward * magnitude * speed);
}
else
{
cc.SimpleMove(Vector3.zero);
}
}
}
Character Controller vs Rigidbody
| 項目 | Character Controller | Rigidbody |
|---|---|---|
| 物理エンジン | 使わない (自前で重力) | ★ Unity 物理に従う |
| 移動 API | cc.Move() / cc.SimpleMove() | rb.AddForce() / rb.MovePosition() |
| 挙動の制御性 | ★ 思い通りに動く | 物理任せ、押されて動く |
| 段差・スロープ処理 | 専用パラメータ (Step Offset / Slope Limit) | 形状次第、追加実装必要 |
| 他オブジェクトとの相互作用 | 弱い (押せない) | ★ 強い (押す/押される) |
| 典型用途 | FPS / TPS 主人公、プラットフォーマー | 樽が転がる、ボールがバウンド、車 |
Rigidbody バージョン
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class RbMover : MonoBehaviour
{
public float speed = 4f;
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
rb.freezeRotation = true; // キャラが転倒しないように
}
void FixedUpdate() // 物理は必ず FixedUpdate
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 input = transform.right * h + transform.forward * v;
Vector3 vel = input * speed;
vel.y = rb.linearVelocity.y; // Unity 6+ 命名
rb.linearVelocity = vel;
}
}
Cinemachine で 3rd Person カメラ
Unity 公式の Cinemachine パッケージは、カメラ追従の煩雑な計算を全部肩代わりしてくれます。
- Window → Package Manager → Cinemachine を Install
- Hierarchy → Create → Cinemachine → Virtual Camera
- Inspector で Follow にプレイヤー Transform、Look At も同じく
- Body = 3rd Person Follow、Aim = POV or Composer
- Damping を調整して追従の柔らかさを設定
Cinemachine Brain (MainCamera に自動付与) が複数の Virtual Camera をブレンドしてくれるので、ボスバトル時だけカメラを引き、装備変更時はクローズアップ、といった演出も簡単。
Input System (新入力システム)
Unity の旧 Input.GetAxis() は便利ですが、ゲームパッド / VR / モバイルが絡むと限界です。Input System パッケージに置き換えると整理されます。
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerInput : MonoBehaviour
{
InputAction moveAction;
InputAction jumpAction;
void Awake()
{
moveAction = InputSystem.actions.FindAction("Move");
jumpAction = InputSystem.actions.FindAction("Jump");
}
void Update()
{
Vector2 move = moveAction.ReadValue<Vector2>();
// move.x : 左右, move.y : 前後
// WASD / 左スティック / モバイルパッド すべて同じ値で取れる
if (jumpAction.WasPressedThisFrame())
{
// ジャンプ処理
}
}
}
Starter Asset: Third Person Controller
Unity が公式無料配布している Starter Assets - Third Person Character Controller (Package Manager → My Assets) を導入すれば、Cinemachine + Input System + Animator + Mover が組み込み済みのキャラが即動きます。学習にも本番にも有効。
キャラに付ける付随コンポーネント
| コンポーネント | 役割 |
|---|---|
| Capsule Collider | 当たり判定 (Character Controller 利用時は内蔵) |
| Animator | アニメーション制御 |
| Audio Source | 足音・声・SE 再生 |
| NavMesh Agent | NavMesh 上の自動経路移動 (NPC 用) |
| AI Behavior Tree | 敵 AI の意思決定 (Behavior Designer 等) |
| Photon View / Network Identity | マルチプレイヤー同期 |
| Health / Stats Script | HP / MP / 経験値などのゲーム固有データ |
パフォーマンス Tips
- 大量に湧かす雑魚キャラは SkinnedMeshRenderer よりも MeshRenderer + GPU Skinning OFF で軽量化
- LOD (Level Of Detail) Group で遠距離キャラを低ポリ化
- NavMesh エージェントは Avoidance Priority で衝突回避コストを調整
- 大規模 RTS なら ECS / DOTS によるエンティティ管理を検討
FAQ
Q: キャラが床をすり抜ける
A: Collider 形状が小さい / Mesh Collider に Convex 必要 / Rigidbody の Collision Detection = Continuous 設定で改善。CharacterController の場合は Step Offset 過大が原因。
Q: アニメーションがブレンドせずカクつく
A: Animator Controller の Transition で Has Exit Time をオフ + Transition Duration を 0.1〜0.25s に。
Q: 同じ Animator Controller を別キャラで使い回したい
A: 元の Controller を右クリック → Animator Override Controller を作成し、内部のクリップだけ差し替えれば共有可能です。
Q: モバイル用の仮想スティックは?
A: Unity UI の OnScreenStick (Input System 付属) コンポーネントを Canvas に置くだけで「ゲームパッド左スティック」として認識されます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
- オブジェクトの追加方法
- 地形
- キャラクター
- カメラ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?