第0041回 / 自分の手に遮られて移動が出来ない問題→解決 | HK-87@UEのブログ

HK-87@UEのブログ

UE4で理想のVRゲームを作るまでの軌跡

ダッシュ移動中に移動が自分の手のアタリに遮られている疑惑。

とりあえず何が起きているのかを確認したい。
コリジョンのヒット状態のデバッグ表示はどうしたらいい?

これかな?

[UE4] コリジョンのデバッグ―Collision Analyzerを使おう!
http://historia.co.jp/archives/594/

ふむふむ。
コリジョンのヒット情報を記録してくれるのか。


確かに、HandMesh と VRPawn がヒットしている。

HandMesh を確認。
Collision のプリセットは NoCollision にしているはずなんだけど・・・

んん??

詳細情報を展開して、個別の設定を見てみると、
Object Responses がすべて Block になっている。


試しにプリセットを IgnoreOnlyPawn に変更して動作確認。

・・・遮られなくなった。。。
 

??

NoCollision って NoCollision じゃないの??

これは UE4 の Collision 属性について、
ちゃんと調べないとあかん。。


まず公式ドキュメントを見る。

Collision Overview
https://docs.unrealengine.com/en-US/Engine/Physics/Collision/Overview/index.html

Collision Response Reference
https://docs.unrealengine.com/en-US/Engine/Physics/Collision/Reference/index.html

読む限り、NoCollision は間違いなく NoCollision のように見える。


NoCollisionがNoCollisionたる所以は、個別のObjectResponsesのチェックボックスではなく
Collision Enabled の "No Collision" の設定によるもののようだ。

Collsion Enabled を disable にすると (disableなんて設定値ないけど)
全て Ignore 設定した時と同じ、って書いてある。

本当に Ignore 扱いになってるの?

Ignore なのにヒットしてるってこと??

試しに Custom にして、Pawn だけ Ignore にしてみる。
Hit しなくなった。

あれ? 全然、Collision Enabled の設定効いていないじゃないか。
なんで???

・・・
んーーー
 

これはもしかして、
誰かがゲーム中に Collision Enabled の値を書き換えているのでは・・・?
(よく気が付いた!)

Tick で Get Collision Enabled の値を Print String してみよう・・・。


やっぱりだー!!


手を握った時にだけ、Collision Enabled に変わっている!
誰だ!
 

↓犯人。


どうやらVRのサンプルは、
拳を握っている時だけ、オブジェクトと干渉できるようになっているようだ。
全然知らんかった。。。

とりあえず一旦この処理を削除。
これで解決ーー。
 

----
※番外メモ

Collision Analyzer は便利だけれども
項目を選択しないと情報が見れないのはちょっと使いづらい。
選択しなくてもプレイ中にリアルタイムにヒットヒット状態を表示してほしい。

pxvis collision

というコマンドがあるらしい。

・・・しかし激重だった。
どうやら Landscape があると重くなってしまうそうで。
今回のゲームでは使えないか。。

ちゃんとデバッグするなら、Landscape のないテストステージを作る必要がある。