メインコンテンツまでスキップ

ゲームコントロール

ゲームコントロールを使うと、オブジェクトを、見る人が操作できるキャラクターにできます。歩く、飛ぶ、見下ろし型のマップを動き回る、といった動きに対応します。このページでは、設定の手順と各設定の役割を説明します。

必要なもの​

  • キャラクター:Game controls トリガーを持つオブジェクト。
  • 上に立てる固い足場:リジッドボディとコライダーを持つ床。
  • カメラ(なくてもかまいません):選ばない場合は、組み込みのカメラが使われます。

ゲームコントロールを追加する​

ゲームコントロールは、ステップではなくトリガーです。コントローラーの設定はすべてトリガーの中にあります。

  1. キャラクターにしたいオブジェクトを選択します。
  2. インスペクターで + new component をクリックし、Events を選びます。
  3. + add event をクリックします。
  4. トリガーを Game controls に設定します。
  5. 下で説明する設定を調整します。
  6. 必要に応じて、On idle、On move、On run、On jump の各ブランチにステップを追加し、キャラクターの動作に反応させます。例えば、アニメーションを再生できます。

コントローラーは、そのオブジェクトがオンの間だけ存在します。オブジェクトをオフにするとコントローラーはなくなり、もう一度オンにすると戻ってきます。

移動​

設定制御する内容
MovementWalk、Fly、Top down のいずれか
Towards「前」の基準。Camera が向いている方向か、シーン自体の Axis か
Pos. Speed · Run Factor秒速何メートルで動くか。また、Shift を押している間に走るとどれだけ速くなるか
Pos. Delay最高速度に達するまでと、止まるまでにかかる時間
Auto-orient · Rot. Speed進む方向にキャラクターが向きを変えるかどうかと、その速さ
KeysWASD、矢印キー、またはその両方
Jumpジャンプの高さ(メートル)。0 にするとジャンプしません
Air Controlジャンプ中に、見る人がどれだけ向きを操作できるか
Rst Y-offsetキャラクターが開始位置からこの距離だけ下に落ちると、元の位置に戻されます
Click to move見る人がタップした地点まで歩きます
Rotate By視点をマウス、キー、またはその両方で回します
Pos. Delay は時間です

例えば 0.5 秒に設定したとします。キャラクターは 0.5 秒で最高速度に達します。坂、段差、質量はどれも動きを遅くするので、動きに物理的な手ごたえが出ます。

0 は「できるだけ速く」という意味です。ほぼ一瞬ですが、キャラクターには質量があるので、完全に一瞬ではありません。

ボディ​

コントローラーは、オブジェクトにカプセル形状を持たせます。そのため、キャラクターはワールドをすり抜けず、ものにぶつかります。

設定制御する内容
ColliderCapsule または Sphere
Size半径と高さ(メートル)
Positionオブジェクトを基準に、カプセルの位置をずらします
Massキャラクターが押す力の強さと、押されたときの動きにくさ
Helperエディターでカプセルを表示します

オブジェクトにすでにリジッドボディがある場合、コントローラーはそれをそのまま使い、その質量で操作します。ない場合は、コントローラーが自動で作ります。

ボディを持つオブジェクトだけが固い

床や壁がキャラクターを止めるのは、リジッドボディとコライダーを持っている場合だけです。それ以外のジオメトリは見た目だけのもので、キャラクターは通り抜けてしまいます。 → 物理

重力はスペースの設定で決まり、ジャンプの高さはその重力を基準に計算されます。ゲームコントロールのあるシーンでは、スペースで物理がオフになっていても、物理がオンになります。物理がなければ、何も動かないからです。

追従カメラ​

設定制御する内容
Cameraキャラクターを追うカメラ。空のままにすると組み込みのカメラを使います
Orient To常にキャラクターを見る At target か、決まった角度を保つ Angle か
Pos. Delay · Rot. Delayカメラがどれだけ遅れて追いかけるか(秒)
Up / Down · Left / Rightその方向に視点を回せるかどうか。Yes、No、Limit のいずれか
Limit視点を回せる範囲(度)
ビューポートで構図を決める

最初のフレームで、カメラはキャラクターとの距離と角度を記憶し、それを保ちます。距離や高さを数値で入力する必要はありません。ビューポートで見た目がよい位置にカメラを置けば、その位置関係が保たれます。

カメラは次のように動きます。

  • 動く前に、まずキャラクターのほうを向きます。キャラクターが少し横にずれても、カメラは回転するだけです。キャラクターがその範囲の端まで来てはじめて、カメラが移動します。キャラクターにぴったり固定したカメラよりも自然に感じられます。
  • 遅れで変わるのは構図で、距離は変わりません。キャラクターが速く動いても、カメラが後ろに下がることはありません。下がると意図しないズームのように見え、酔いの原因にもなるからです。
  • カメラはキャラクターの背後に回り込みます。キャラクターが動いていて、見る人が視点を回していないときです。Left / Right をロックするか、Top down を選ぶと、この動きはオフになります。
  • 視界がさえぎられることはありません。カメラとキャラクターの間に何かが入ると、カメラは近づき、そのあとゆっくり元の距離に戻ります。0.5 メートルより近づくことはありません。
  • マウスホイールでズームできます。設定した距離のおよそ 3 分の 1 から 2.5 倍まで変えられます。

コントローラーがカメラを動かしている間、そのカメラ自体の操作(オービット、フライ)は無視されます。そうしないと、毎フレーム両者が打ち消し合ってしまいます。

タッチ操作とゲームパッド​

画面上のコントロールはタッチスクリーンでしか表示されないので、オンのままでかまいません。

設定制御する内容
Touch controls → Enableスティックとジャンプボタンを表示します
Rotate Byシーン上を Drag して視点を回すか、2 本目の Joystick で回すか
Movement stick · Jump buttonそれぞれの位置を 3×3 のグリッドで指定します
Offset · Button Size画面の端からの距離と、大きさ(ピクセル)
VisibilityHide でコントロールを隠します。スワイプで視点を回す操作はそのまま使えます

ゲームパッドは設定なしで使えます。

  • 左スティックで移動します。
  • 右スティックで周りを見回します。
  • A でジャンプします。
  • バンパーとトリガーボタンで走ります。

キャラクターの動きに反応する​

On idle、On move、On run、On jump の各ブランチは、キャラクターの動作が変わったときに実行されます。スクリプトとパッチも、同じ変化を同じタイミングで受け取ります。

  • スクリプトでは、その変化を待ち受けられます。
  • パッチでは、on_game_control ノードに pulse と state の出力があります。

そのため、足音はスクリプトで鳴らし、アニメーションはブランチで扱う、という分担をしても、両者はずれずに動きます。

コントローラーなしで追いかけさせる​

プレイヤーを追いかける敵、ペット、カメラのターゲットなど、もっと単純なものには、Follow object、Look at object、Stop following ステップを使います。

これらのステップは、オブジェクトを直接動かします。そのため、すでに物理で動いているオブジェクトには使えません。その場合は、スクリプトからインパルスを加えて押してください。


次へ: UI カード — ボタン、メニュー、スコア表示を作ります。