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"

オーバーラップしたアクターをDestroy Actorで破壊しようとするとエラーが出ます。

オーバーラップしたアクターを破壊しようとするとエラーが出ます。

そのアクターの破壊自体は出来るのですが、ForEachLoopの部分にエラーが出るようです。

Tickでやったり、ブランチでやったり試したのですが、いつもForEachLoopやブランチにエラーが出ます。

エラーの理由もよくわからないので、どうすれば良いのか分かりません。

回答よろしくお願いします。 alt text alt text

Product Version: UE 4.13
Tags:
2017-01-17 (6).png (482.8 kB)
2017-01-17 (7).png (523.8 kB)
more ▼

asked Jan 17 '17 at 01:52 PM in Japanese

avatar image

onoborisun
27 5 4 6

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

2 answers: sort voted first

ここで出力されているログの"pending kill" は、既に実体として存在していないObject(Null Object)に対して
DestroyActorを行っていることによるものです。
この問題解決方法として、DestroyActorの前にIsValidを追加してObjectそのものが存在しているかのチェックを行う方法や、Foreachを使用せずに、単純にOverlapのOtherActorPinをCastノードに接続して、1度のみチェックを行うようにして下さい。
こうすることで、存在しないObjectに対するDestroy処理を行わくなります。
宜しくお願いします。

more ▼

answered Jan 17 '17 at 02:26 PM

avatar image

Pier Pop
2.1k 79 4 27

avatar image Pier Pop Jan 17 '17 at 02:40 PM

上記の補足として処理を示します、赤枠の箇所が上記で説明した処理の概要です。
GetOverlappingActorsでもActorを取得できますが、イベント駆動型の設計思想で考えるとOverlapComponentから処理する方法が良いと思われます。 alt text

overlap.png (160.4 kB)
avatar image onoborisun Jan 17 '17 at 02:52 PM

処理の流れまで教えてくださってありがとうございます。

その通りにしてみたところ、想定通りの動きになりました!

回答ありがとうございました!

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

単純にぶつかってきたActorをDestroyしたい場合は、OnComponentBeginOverlapのOtherActorをDestroyActorのTargetに繋げばぶつかって来たActorを削除出来ます。

添付されているスクリーンショットの状態ですとFlying_nortに何かがぶつかったらFlying_nort自身を削除してしまいます。その上でForEachLoopで既に消してしまったFlying_nortを削除しようとしているのでスクリーンショットのように大量のエラーが出てます。

more ▼

answered Jan 17 '17 at 02:37 PM

avatar image

tamfoi
1.9k 74 6 33

avatar image onoborisun Jan 17 '17 at 02:52 PM

エラーの理由を詳しく教えてくださってありがとうございます。

とても参考になりましたし、合点がいきました。

回答ありがとうございました!

(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