ゲームの途中でプレイヤーのコリジョンを一時的に消したいのですが、可能でしょうか?
UnityでいうIsTriggerをスクリプト上でTrueにする感じです。
可能であればどうしたらいいか 教えてください。お願いします。
「UnityでいうIsTriggerをスクリプト上でTrueにする感じ」と「コリジョンを一時的に消したい」の意味合いは全く違いますが、Blockされなければよいのでしょうか?
申し訳ありません、コリジョンを一時的に消したいという言い方は変でした。UnityのIstriggerの方の解釈です。例えば、プレイヤーが床の上にいたら床からすり抜けて欲しいのです。
CharacterのCollisionを無効にしたいだけであれば、 SetCollisionEnabled
で、CollisionEnabledをNoCollisionにしましょう
蛇足ですが、「UnityのIsTriggerをTrueにする」というのを「Collisionを無効にしてすり抜けさせる設定」という解釈をしている場合は少し調べ直したほうが良いです
UE4で言えば、CollisionResponsesをBlockにするかOverlapにするか、という設定にあたります
なお、個人的にですが、落とし穴のように床を抜きたいのであれば、Playerではなく床の方をなんとかしたほうが楽でしょう
ありがとうございます!
ue4は全然知識が無くて どう説明していいか分からなかったのでUnityで制作した時の IsTriggerの設定が一番伝わりやすいかと思い変ないい方になってしまいました。
そしておっしゃる通り床の方で設定した方がいいですよね。ありがとうございました。
すいません、今実行してみたところ プレイヤーが移動しなくなるだけで床の下には落ちてくれませんでした。なぜでしょうか?
Collision PresetsをOverlapに変えればいいのかと思いましたが、ブループリントには見当たりませんでした。
Characterが落ちる動作は物理ではなくCharacterMovementComponentによるものです。
CharacterMovementはおそらく内部でCollisionの状態を見ているはずですので、下手に触ると破綻する恐れがあります。
ですのでキャラクターを床下に落としたい場合は、床のCollisionを無効にするほうが楽である、とアドバイスしております
床や壁、障害物をすり抜けるようにしたいと考えてました。
この場合でもその方法で、任意のタイミングで床や壁のコリジョンを無効にする方法が楽でしょうか?
通り抜けフープを作るとしたら、どういう処理で組むのがいいでしょうか?重ね重ね申し訳ありません。