Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

コンポーネントはエンティティが何をできるかを定義します。

エンティティはコンテナであり、コンポーネントはそのコンテナに取り付けられた機能です。

image.png

このレッスンでは、初心者として目にする主なコンポーネントタイプを紹介します。すべてのオプションを覚える必要はまだありません。目標はパターンを認識することです:

> エンティティに機能が必要なときは、通常それを提供するコンポーネントを追加します。

エンティティはコンポーネントから作られる

新しいエンティティは非常にシンプルに始めることができます。

そして、コンポーネントを追加することで、より多機能になります:

  • Transform Componentを追加すると、3Dワールド内の位置が決まります。
  • Mesh Componentを追加すると、視認可能になります。
  • Rigid Body Componentを追加すると、世界と衝突できます。
  • Python Componentを追加すると、ゲームプレイコードを実行できます。
  • Logic Bricks Componentを追加すると、ビジュアルロジックを実行できます。
  • Audio Player Componentを追加すると、音を再生できます。

これが一般的なCaveのワークフローです:コンポーネントを組み合わせてエンティティを作成します。

例えば:

望むオブジェクト 可能なコンポーネント構成
融合炉 Transform, Mesh, Light, Audio Player.
ドア Transform, Mesh, Rigid Body, Logic Bricks または Python.
プレイヤー Transform, Character, Camera, Animation, Python.
ヘルスピックアップ Transform, Mesh, Rigid Body トリガー, Logic Bricks または Python.

すべての状況で特別なオブジェクトタイプを探す代わりに、必要なオブジェクトを組み合わせて作ります。


コアコンポーネント

一部のコンポーネントは非常に一般的で、常に目にするでしょう。

コンポーネント 主な用途
Transform Component 位置、回転、スケールを格納します。
Camera Component カメラビューを定義します。

Transform Component

Transform Componentは位置、回転、スケールを格納します。

image.png

ほとんどの3Dエンティティはこれに依存しています。なぜなら、ほとんどのオブジェクトはワールド内のどこかに存在する必要があるからです。3Dビューでエンティティを移動、回転、スケールするときは、そのトランスフォームを編集しています。

多くの他のコンポーネントもトランスフォームに依存しています:

  • ライトは位置を必要とします。
  • メッシュは位置を必要とします。
  • カメラは位置を必要とします。
  • 3D音源は位置を必要とします。

Camera Component

Camera Componentはカメラビューを定義します。

image.png

エンティティをゲームカメラとして使いたい場合に使用します。

カメラは次のような用途で使われます:

  • 一人称ゲーム
  • 三人称ゲーム
  • トップダウンゲーム
  • メニュー
  • カットシーン
  • 特別なビュー

シーンにはデフォルトのシーンカメラがありますが、ゲームプレイのカメラは通常Camera Component付きのエンティティです。これにより、カメラを動かしたり、親子関係をつけたり、アニメーションしたり、スクリプトしたり、ゲーム中に切り替えたりするのが簡単になります。


グラフィックスコンポーネント

グラフィックスコンポーネントはプレイヤーが見るものを制御します。

コンポーネント 使用用途
Mesh Component 見える3Dオブジェクト。
Light Component 局所的な光源。
Particle Component 多数の小さな要素からなるビジュアル効果。
Animation Component スケルタルアニメーションの再生。
Animation Socket Component アニメートされたボーンに子エンティティを取り付け。

Mesh Component

Mesh Componentはメッシュをマテリアルでレンダリングします。

image.png

使用例:

  • 小道具
  • キャラクター
  • ドア
  • 武器
  • 環境パーツ
  • 目に見えるすべて

メッシュコンポーネントは通常、メッシュアセットとマテリアルアセットを参照します。メッシュは形状を、マテリアルは表面の見た目を制御します。

Light Component

Light Componentはシーンに局所的な照明を追加します。

image.png

使用例:

  • ランプ
  • トーチ
  • 魔法の光
  • 光る小道具
  • スポットライト

シーンの太陽光や環境光はシーン全体に影響します。ライトコンポーネントは特定の場所に局所光が必要な場合にエンティティに配置します。

Particle Component

Particle Componentは繰り返されるビジュアル要素や効果を作ります。

image.png

使用例:

  • 火花
  • ほこり
  • 破片
  • 魔法の効果

パーティクルは、すべての火花やホコリのパフを手動で配置するエンティティにするのは望ましくないため便利です。一つのパーティクルコンポーネントで多数の小さな視覚効果を生成・制御できます。

Animation Component

Animation Componentはスケルタルアニメーションを再生します。

image.png

アーマチュアとアニメーションアセットを使い、再生、ブレンド、レイヤー処理、最終的なアニメーションポーズをハンドリングします。

使用例:

  • アニメーションキャラクター
  • アニメーション生物
  • スケルタル小道具
  • ボーンを使うインポート済みアニメーションメッシュ

Animation Socket Component

Animation Socket Componentは子エンティティを親のアニメートされた特定のボーンに取り付けます。

image.png

使用例:

  • バックパック
  • 手持ち小道具

小道具を毎フレーム手動で更新する代わりに、ソケットは選択されたボーンに追従します。


物理コンポーネント

物理コンポーネントは衝突と物理的移動を制御します。

コンポーネント 使用用途
Rigid Body Component 衝突、物理オブジェクト、トリガー。
Character Component プレイヤーやNPCのキャラクター移動。
Physics Constraint Component 剛体同士の接続。

Rigid Body Component

Rigid Body Componentはエンティティに物理の振る舞いを与えます。

image.png

使用例:

  • 静的衝突
  • 動的オブジェクト
  • 物理小道具
  • トリガーのようなゴーストオブジェクト

たとえば壁は静的リジッドボディを使い、プレイヤーが通り抜けられないようにします。動かせるクレートは動的リジッドボディを使い、力に反応できます。

Character Component

Character Componentはキャラクタータイプの移動に設計されています。

image.png

歩く、ジャンプする、壁に沿って滑る、坂を処理する、ゆるい物理オブジェクトではなくキャラクターらしい動きをさせたいプレイヤーやNPCに使用します。

これはプレイヤー操作可能なキャラクターの出発点として普通のリジッドボディよりも適しています。

Physics Constraint Component

Physics Constraint Componentはリジッドボディを接続します。

より高度な物理セットアップに便利です。

  • ヒンジ
  • ジョイント
  • ラグドールセットアップ
  • 接続された物理オブジェクト

すぐに必要になることはありませんが、何かを認識しておくと良いでしょう。後でドアのスイング、吊り下げ物、機械部品のようなものに役立ちます。


ワールドとゲームコンポーネント

いくつかのコンポーネントは世界の構築やゲームの提示に役立ちます。

コンポーネント 使用用途
Terrain Component 屋外の風景や地形の造形。
Audio Player Component 音、音楽、環境音、3Dオーディオ。
UI Element Component テキスト、ボタン、パネル、HUD、メニュー。

Terrain Component

Terrain Componentは地形を作成・編集します。

image.png

屋外レベル、風景、丘、谷、道路、大きな地面表面に使用します。

地形には独自の編集ツールがあり、後で説明します。

Audio Player Component

Audio Player Componentは音や音楽を再生します。

使用例:

  • 音楽
  • 環境ループ
  • 効果音
  • 3D位置オーディオ
  • UI音

オーディオはスクリプト、Logic Bricks、タイムライン、UIコールバック、アニメーションコールバックでもトリガー可能です。

UI Element Component

UI Element Componentはゲームインターフェース要素を作成します。

image.png

使用例:

  • テキスト
  • ボタン
  • パネル
  • メニュー
  • ヘルスバー
  • HUD要素

CaveのUIもエンティティから構築されているため、UIでも階層、コンポーネント、プロパティ、ロジックがゲームの他の部分と同様に使えます。


ロジックコンポーネント

ロジックコンポーネントはエンティティの挙動を作ります。

コンポーネント 使用用途
Python Component 再利用可能なPythonゲームプレイ挙動。
Python Code Component 小さいインラインPython挙動。
Logic Bricks Component ビジュアルスクリプトグラフ。
State Machine Component 状態ベースの挙動。

Python Component

Python ComponentはPythonスクリプトアセットをエンティティに取り付けます。

image.png

次のような再利用可能なゲームプレイロジックに使用します:

  • ドアの挙動
  • 敵の挙動
  • インタラクション
  • UIロジック
  • ゲームルール
  • カスタムシステム

Python Code Component

Python Code Componentは小さなインラインPythonスニペットをコンポーネント内に直接格納します。

image.png

クイックテスト、小さい局所的な挙動、一時的なプロトタイプに適しています。

大規模な再利用可能ロジックには、Python ScriptアセットとPython Componentの組み合わせを推奨します。

Logic Bricks Component

Logic Bricks ComponentはLogic Bricksアセットをエンティティに取り付けます。

image.png

Logic BricksはCaveのビジュアルスクリプティングシステムです。コードを書かずにノードを繋ぐことで挙動を作成できます。

image.png

トリガー、簡単なインタラクション、UI挙動、視覚的に理解しやすいゲームプレイイベントに使用します。

State Machine Component

State Machine Componentは階層的な状態機械をエンティティに取り付けます。

image.png

ステートマシンは、以下のような明確な状態を持つ動作に役立ちます:

  • 待機状態。
  • 歩行。
  • 追跡。
  • 攻撃。
  • 逃走。
  • 死亡。

特に敵キャラクター、NPC、構造化されたゲームプレイロジックに有用です。


Vehicle Components

Caveには車両関連のコンポーネントも含まれています。

スターターの車両コンテンツを生成すると、これらを見ることがあるかもしれません。

Component Purpose
Vehicle Component 物理オブジェクトを車両スタイルのボディに変換します。
Wheel Component 車両のホイール挙動を定義します。

Vehicle ComponentはリジッドボディやWheel Componentと連携して動作します。

Wheel Componentはサスペンション、ステアリング、ホイール半径、前輪かどうかなどのホイールに関する挙動を含みます。

Practical Component Recipes

コンポーネントの組み合わせについて、いくつかのシンプルな例を紹介します:

Goal Component Recipe
見える静的な小道具 Transform + Mesh.
固い壁 Transform + Mesh + Rigid Body.
動くプレイヤー Transform + Character + Python + Camera.
雰囲気のある松明 Transform + Mesh + Light + Audio Player.
メニュー内のボタン UI Element + Python または Logic Bricks.
敵の挙動 Character + Animation + State Machine または Python.

これらは厳密なルールではなく、出発点です。

オブジェクトを作るたびに、目的に合ったコンポーネントの選択が速くなっていきます。

Other Components

Caveにはこのレッスンで扱うよりも専門的なコンポーネントがさらにあります。

それは普通のことです。

最初のシーンを作るのにすべてのコンポーネントを知る必要はありません。今は、エンティティに適切なコンポーネントを追加すると役立つ存在になる、という有用なパターンに集中しましょう。