P6.ねぇ、アリシアちゃん☆.03「3rd Person Character Controller テスト(Blender 2.80 エリア最大化)」
サードパーソン・キャラクタ・コントローラ をノードだけで作ってみた。なかなかコレって凄いと思う。実は俺って天才なんじゃない? ポイントは「ヘッド部分にあるオブジェクト("CamPivPiv")に子オブジェクト("CamPivPivF", "CamPivPivR")を付け、そいつらの位置からカメラ方向に対して前と右のベクトルを作るところ」だ。
今更ながらLogic Node エディタで使えるショートカット
今更だが、Ctrl+Space でマウスカーソルがあるエリアがおっきくなる。戻す時も Ctrl+Space のトグル式。これが意外と使える。ノードトゥリーを書くのに小さい場所でチマチマやるのは目も疲れるしね。おっきくしてやんな。
- Ctrl+Space: エリアを大きくする / 大きさを戻す
(Ctrl+Alt+Space だともっと大きくなるけど、ボタン3つ押すのメンドイしヘッダの辺りのボタンが消えて全部ショートカットでやんなきゃいけなくなるので、これはやめとけって感じだ。)
それから、ノードトゥリーの移動はマウス中ボタンドラッグの他に、
- Ctrl+マウスホイールぐるぐる: 水平移動
- Shift+マウスホイールぐるぐる: 垂直移動
が出来る。多分、他のエディタでもそうなってるハズ。真横とか真上とかに移動したい時は便利。マウス中ボタンは押し込むのに力がいるからね。で、
- 普通にマウスホイールぐるぐる: 拡大縮小
なのはご存知の通り。
あと、使えるショートカットとしては
- Home: 全体を表示
- テンキーのピリオド ".": 選択ノードを中心に表示
というのがある。ノードはアッチコッチに置けるから、たまに、はるか遠くに置いてしまった孤立ノードとかが Home で発見できる。
3rd Person Character Controller
では、本題。YouTube。
問題点:
- まだ、アリシアちゃんが進行方向を向かない。
- モーションもまだ。
- なんか、色が薄い? (シェーダー関係かな?)
ノードトゥリー
では、今回もノードトゥリーを貼っておこう。
❶ 各種プロパティ設定。
- "myDir": 自分の進む方向。
- "mySpd": 自分の進む速度。秒速。ほんとは Float 型でセットしたいんだけど、ノードの場合計算させるのがメンドイのでベクトルで。
- "camDirF": カメラの進行方向ベクトル。前。
- "camDirR": カメラの右方向ベクトル。右。
❷-1
- キャラコンはリジッドボディーなので、Update は物理用。
- ヘッドオブジェ("CamPivPiv")とその子らの差を取って、カメラ方向に対しての前・右ベクトルを求めている。"camDirF" に前向き、"camDirR" に右向きのベクトルが入る。これらがあるからカメラ方向に対しての WADS 移動が出来るというわけ。
- "myDir"(自分の進行方向とスピード)は毎回最初にクリアしておいて、この後 ❷-2 ~ ❷-3 で決定させる。
❷-2
Keyboard State
っていうノードは Armory 6月号で廃止になったみたいだ。Keyborad
になったみたい。ただコレ、Out から線をつながなくても動いちゃうからなんか変な感じだな。- やってることは、"a" を押したら、"myDir" から右向きベクトル("camDirR")を引いて、"d" を押したら、"myDir" に右向きベクトル("camDirR")を足すってことだ。カメラ方向に対して左右の進行方向をグローバル座標(ワールド座標)でセットしていく。
❷-3
- ここでは、カメラ方向に対して前後をセットしていく。前後だから "camDirF" を足したり引いたりしてるんだぞ。
- ❷-2 ~ ❷-3 を通じて、前後左右のキー入力を加算してるから、W+D とか複数キー同時押しで斜めに行くことも出来る。このやり方はキャラ移動の基本設計みたいだ。覚えておこう。
❷-4
- 前後左右の足し算・引き算で求まった "myDir" をノーマライズしてから、スピード("mySpd")を掛けて移動させる。
- ただ、重力は欲しいので、
Get Velocity
で Z 方向の値を持ってくる。Get Velocity
ではリジッドボディーの現在の動きが取得できる。 - 物理の移動には
Set Velocity
を使う。リジッドボディーの動きをこれでセットしちゃう感じだな。Linear が各軸方向への移動速度(まーそのものずばり、ベロシティーだよ)、Angular は各軸の回転速度を入れるところ。 - それぞれの Factor には倍率を入れる。今回はキャラコンが傾かないように、Angular Factor の X Y に "0.000" を入れる。
❸ ジャンプ
Apply Impulse
で一瞬の力を加える。まー、ビリヤードで玉を突く感じの力の加え方だ。ここでは Z: "50" になってるが、アリシアちゃんの重さを 20 にしたから(確か 20 のはず)。物体の重さのデフォは 1 なので、大きすぎる力を加えると戻ってくるまでに時間が・・・。まー、様子を見て変えてくれ。
以上。
★ 次回は、方向転換とモーションだな。