P6.ねぇ、アリシアちゃん☆.02「3rd Person Camera テスト」
アリシアちゃん移動の前に、簡単な3人称カメラを仕込もうと思う。今回はさらにその前の段階、カメラ位置のテスト。ノードを使ってやってるんだが、床や壁の後ろには回り込まない様には出来た感じだ。
YouTube
これ
問題点:
- レイキャスト: 髪の毛にあった剛体にもレイが反応するで、髪の毛やスカートなどのシミュレーション用の剛体は全部削除。で、どうやって揺らそっかなー。
ノードトゥリー
要らないと思うけど、貼っておこう。全部で10パーツ。
以下、部分的に。
❶ レイの発信・受信オブジェクト(YouTube 動画の緑色のやつ)間の距離を確定。これで将来的にレイを飛ばす最大距離(最長カメラ距離)を変えたい時、有効か?
❷ 初期設定。
- "senYoko" と "senTake" はマウスセンシ。見た目 "0.000" になってるけど、中身は "-0.0003"。
- "limTakeU"、"limTateS" は縦回転のリミット。単位はラジアン。
- "minDis"、"maxDis" はカメラの最小距離、最大距離。
Set Mouse Lock
でマウスをロック。多分マウスカーソルを画面中央にロックして、マウスカーソルが画面からはみ出さないようにする機能っぽい。
❸ マウスロックすると、マウスカーソルが消えるしゲーム画面から出られなくなるので、ゲームを [×] で終了させられなくなる。ロックを外す仕組みが必要。
❹ マウスの横移動での処理。On Mouse
の "Moved" とMouse Coords
の Movement の組み合わせで移動量を取ってくる。回転させるオブジェクトは "CamPivPiv"。YouTube 動画の水色のやつ。これは "CamPiv" の親。
❺ マウスの縦移動での処理。回転させるオブジェクトは "CamPiv"。YouTube 動画の青色のやつ。カメラの親。カメラ回転の中心。縦回転は、"limTakeU"、"limTateS" で回転のリミットがある。
❻ メインルーチン。カメラを動かす部分だから、"Late Update"。上下左右、4つのレイを飛ばすイベントを呼んでる。❼~❿で "minDis"(カメラまでの一番短い距離)が決定されるので、最後にカメラ位置 "CamPos" をセット。
❼ 下レイ。レイを飛ばすのはCast Physics Ray
。リジッドボディーに反応する。(なんでもかんでも反応するみたいで、物理のレイヤーは無いのかな? 髪の毛のリジッドボディーに反応してしまったので、アリシアちゃんが持つ全リジッドボディーを削除した。) 何かに当たってれば、そこまでの距離を "minDis" 最小値に入れる。None
は「なんもねー」って事?
❽ 左レイ。Math
の "Minimum" で比較して、こっちの方が距離が短かったら、"minDis" に入れなおす。
❾ 右レイ。やってることは上と同じ。
❿ 上レイ。同上。
以上。
★ 使用してる音源はフリーなハズなんだが、何でか知らんが「侵害している~」って言われんだよな。めんどくさ。