ゲーム操作
ゲーム操作は、オブジェクトを来場者が動かすものに変えます。歩く、飛ぶ、見下ろしのマップを進む。
追加するのはトリガーとしてであって、ステップではありません。ゲーム操作のトリガーを オブジェクトに置くと、コントローラー一式がその設定の中に収まります。そのブランチ(待機・移動・ ジャンプ・走行)を使えば、キャラクターがいま何をしているかに反応できます。
コントローラーはそのオブジェクトと寿命を共にします。オブジェクトを無効にすれば消え、また有効に すれば戻ってきます。
操作されるオブジェクト(このトリガー)、立つための固い何か(rigid body と collider を 持つ床)、そしてカメラ。カメラは用意しなくても、自動で 1 つ提供されます。
移動
| 設定 | 制御するもの |
|---|---|
| モード | 歩行、飛行、見下ろし |
| 前方の基準 | カメラの向き、またはシーン自身の軸 |
| 速度 · 走行倍率 | 毎秒メートル、そして Shift を押している間どれだけ速くなるか |
| 加速 · 減速 | 速度に達するまでの時間と、落とすまでの時間 |
| 進行方向を向く | 進む方向に向き直るかどうか、そしてその速さ |
| キー配置 | WASD、矢印キー、またはその両方 |
| ジャンプの高さ | メートル。0 ならジャンプなし |
| 空中制御 | ジャンプ中にどれだけ操作が効くか |
| リセット高さ | 開始位置よりこれだけ下に落ちるとキャラクターが戻されます |
| クリックで移動 | タップした地点まで歩く |
| 視点を回す手段 | マウス、キー、またはその両方 |
「0.5 秒」とは、その差を 0.5 秒で埋めるだけの力をコントローラーがかける、という意味です。 坂・押し合い・質量がその力と押し問答をします。だから移動が物理的に感じられるのです。
0 はできるかぎり速くという意味で、完全に瞬時ではありません。キャラクターには質量があるからです。
体
コントローラーはオブジェクトにカプセルを与え、力で動かします。だから世界をすり抜けるのではなく、 きちんと衝突します。
| 設定 | 制御するもの |
|---|---|
| 形 | カプセルまたは球 |
| 半径 · 高さ | メートル |
| オフセット | オブジェクトに対するカプセルの位置をずらす |
| 質量 | 押す強さと、押されにくさの両方 |
| ヘルパー表示 | エディターにカプセルを描きます |
自分で rigid body を作ってある場合、コントローラーはそれに手を触れず、質量を引き継いで操作だけを 行います。なければ、代わりに 1 つ作ります。
床や壁がキャラクターを止めるのは、rigid body と collider を持っているときです。ただの飾りの ジオメトリは書き割りにすぎず、キャラクターはまっすぐ通り抜けます。 → 物理
重力は space から来て、ジャンプの高さはそれを基準に測られます。ゲーム操作のあるシーンは、space で 物理がオフになっていてもオンにします。そうしなければ何も動かないからです。
追従カメラ
| 設定 | 制御するもの |
|---|---|
| カメラ | どのカメラが追うか。空にすると組み込みのものを使います |
| 向ける先 | キャラクターを見続けるか、固定した角度を保つか |
| 位置 · 注視の遅れ | カメラがどれだけ遅れて付いてくるか(秒) |
| 上下 · 左右 | 自由・固定・制限 |
| 制限 | どこまで上がれるか、どこまで回れるか(度) |
最初のフレームで、リグはカメラとキャラクターの距離と角度を記憶し、以後それを保ちます。距離や 高さの数値を推測する必要はありません。ビューポートで見て良いと思える位置にカメラを置けば、 そこに留まります。
いくつかのふるまいは意図されたもので、知っておく価値があります。
- カメラは追いかけるのではなく、キャラクターのほうを向きます。 横方向に少し遊びがあり、その 範囲ではカメラは位置を変えずに回転し、キャラクターが端に達してはじめて滑り出します。被写体に 溶接されたカメラは、カメラではなく三脚に見えます
- 遅れが効くのは画づくりであって、距離ではありません。 キャラクターが加速してもカメラは後ろへ 流れません。それは頼んでいないズームに見えますし、やわらかい追従が気持ち悪くなる原因でもあります
- キャラクターが動いていて、あなたが視点を回していないとき、画は背後へゆっくり回り込みます。 左右を固定するか、見下ろしモードにすると、これは無効になります
- カメラは遮られることを拒みます。 自分とキャラクターの間に何かが入ると、寄ってから、あとで ゆるやかに戻ります。0.5 メートルより近づくことはありません
- ホイールでズームします。 決めた距離のおよそ 1/3 から 2.5 倍までの範囲です
リグがカメラを動かしている間、そのカメラ自身の操作(orbit、fly)は無視されます。毎フレーム 取り合いになってしまうからです。
タッチとゲームパッド
画面上の操作はタッチスクリーンでのみ描かれるので、オンのままにしておいて構いません。
| 設定 | 制御するもの |
|---|---|
| 画面上の操作 | スティックとジャンプボタンを表示 |
| 視点を回す方法 | シーンのスワイプ、または 2 本目のスティック |
| スティックの隅 · ボタンの隅 | 3×3 のどのセルに置くか |
| 余白 · ボタンの大きさ | 端からの余白と、ピクセル単位の大きさ |
| 表示 | グラフィックを隠す。スワイプでの視点操作は残ります |
ゲームパッドは設定なしで、ほかのすべてと並行して使えます。左スティックで移動、右スティックで 視点、A でジャンプ、バンパーとトリガーで走行です。
キャラクターの状態に反応する
ブランチを実行するのと同じ状態変化が、script と patch にも届きます。script はそれを聞けますし、
patch には pulse と state の出力を持つノードがあります。
3 つとも同じ瞬間に受け取るので、アニメーションはブランチに任せつつ、足音は script から鳴らす、 といったことができ、ずれません。
コントローラーなしで追従させる
もっと単純なもの(プレイヤーを追う敵、ペット、カメラのターゲット)には、follow・ look at target・stop following のステップがあります。
これらはオブジェクトを直接動かすので、すでに物理が動かしているものには効きません。その場合は script からインパルスを使ってください。
次へ: インターフェースカード — ボタン、メニュー、スコア表示。