x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

CharacterBP内に置いたコリジョンが移動時にしかOverlapイベントを発生しない

こんにちは 現在サードパーソンテンプレートを用いてカメラが水中に入ったらカメラにエフェクトをかけるということをしようとしているのですが、Overlapイベントがキャラクターが移動したときのみしか発生しません

上記を実現するために下記の手順を踏みました

  1. テンプレートに付属しているThirdPersonCharacterのFollowCameraの子にSphereCollisionを配置する

  2. SphereCollisionは OverlapAllDynamic / Generate Overlap Eventを有効にする

  3. イベントグラフにて On Component Begin Overlap (Sphere) イベントを置き、Print String等であたったことがわかるようにする

  4. フィールド上に水中を模した大きなBoxCollisionを持ったアクタを設置しSphereCollisionと同じように設定をする

alt text alt text

これで3人称視点でカメラを動かし、水中を模したBoxCollisionにカメラが侵入すればOverlapイベントが走るかと思ったのですが、実際にはキャラクターをWASDまたはジャンプなどキャラ自体に動きをもたせた状態じゃないとOverlapが発生しないという事態になりました。

  1. カメラは水の中でWASDを押してキャラ移動 : 移動した時点でOverlap発生

  2. カメラは水の外 / キャラクターのみ水中でWASDを押してキャラ移動 : Overlap発生せず

  3. キャラクターを移動させっぱなしの状態でカメラを水中に入れたり出したり : 水中に入る度にOverlap発生

  4. キャラクターは移動させっぱなしの状態でカメラは水の外 : Overlap発生せず

上記のようにキャラが移動するときのみしか当たり判定?が働いてないように感じられます 一通り調べては見たのですがコリジョンを使用した方法の解決策がわかりませんでした

どなたか知恵を貸していただけなしでしょうか、よろしくお願いいたします。

環境

  • Windows 10 64bit

  • Unreal Engine 4.19

  • ThirdPerson テンプレート

Product Version: UE 4.19
Tags:
how.png (303.3 kB)
how.png (507.3 kB)
more ▼

asked Apr 09 '18 at 02:47 PM in Japanese

avatar image

stk_group
30 3 8

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first

1つのアクターに複数のコリジョンがあると、思ったように作動しないことがあります。
正確な条件はわからないんですが、衝突の仕方によって反応したりしなかったりという、ちょっと困った状態になります。

このケースも、キャラクター本体のカプセルコリジョンと、カメラにくっついたコリジョンと、2つあるのが原因だと思います。

この問題の解決方法はわからないのですが。とりあえずカメラにくっつけてるコリジョンを、別のアクターにすれば、想定した動作になると思います。
1つのアクターに1つのコリジョンという形になるので。

TickイベントとSetActorLocationで常にカメラを追尾する別アクターにするか、あるいはChildActorComponentとしてキャラクターにくっつけるのでもいいかもしれません。

more ▼

answered Apr 09 '18 at 04:34 PM

avatar image

unaunagi
1.4k 30 6 19

avatar image stk_group Apr 09 '18 at 04:44 PM

回答有り難うございます 同じものをPawnで作ってみた所想定通りの動きをしたためCharacter固有の問題のように感じられました Sweepはルートのコリジョンしか参照しない件などでも引っかかったので1アクターにつき1コリジョンという制約のもとやったほうが良さそうですね 今回はChildActorComponentで対応したいと思います、ありがとうございました

【-- 04/10 1:50 追記 --】 ChildActorにしてみた所、質問したときと同様移動時しかOverlapが働きませんでした。Pawnにもつけてみた所移動関係なく発生したためCharacter自体なにか移動時以外はコリジョンを一切チェックしないなど有るのかもしれません…

avatar image stk_group Apr 13 '18 at 04:59 AM

結果としましてはPawnの Use controller Rotation Yaw にチェックが入っているとキャラ移動時のみしか反応しないということが判明しました チェックを外して独自でカメラの挙動を用意することで動くようになりました 今回はunaunagiさんが提案してくださった別アクターにして毎Tickアクタの位置をカメラ位置に移動させる方法でやりたいと思います ありがとうございました

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question