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"

ボーンとオブジェクトの距離測定

キャラクターのボーンとオブジェクトがある範囲内に同時に存在するときのみ距離測定を行いたいです。 alt text

キャラクタ側のブループリントにカプセルコリジョンを設置し、オーバーラップイベントが起こった場合にOtherActorとコリジョンにオーバーラップしているボーンとの距離を測定しようと思ったのですが、 コリジョンにオーバーラップしているボーンを取得する方法がわかりません。

オーバーラップした自身のボーンを取得する方法を教えて下さい。 もしくは他にいい方法があればそちらも教えてもらえるとありがたいです。

Product Version: UE 4.16
Tags:
aho.png (7.3 kB)
more ▼

asked Sep 28 '17 at 06:12 AM in Japanese

avatar image

purin52002
27 9 12 17

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

1 answer: sort voted first

ボーン自体にオーバーラップ用のコリジョンをつけて直接判定してください。

ボーン自体につける場合にはSkeletal Mesh Componentを親にして、AttachToComponentノードを利用して、Socketにボーン名またはソケット名を指定することでアタッチが可能です。

https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/Transformation/AttachToComponent/index.html

more ▼

answered Sep 28 '17 at 01:39 PM

avatar image

alwei STAFF
3k 126 19 55

avatar image purin52002 Sep 29 '17 at 05:57 AM

回答ありがとうございます。 幾つか質問があります。

  1. AttachToComponentを呼び出すのはBeginPlay時でいいのでしょうか

  2. root component cannot be ...(ルートコンポーネントは同じアクタの他のコンポーネントに取り付けられない)といったような警告がでるのですがどういう意味でしょうか

  3. ボーンにコリジョンをつけた後はどのように判定すればいいのでしょうか?現在は判定用のコリジョン(sensor)のOnComponentBeginOverlapイベントの返り値であるOtherActorからオブジェクト(図の青丸)を取得しています。同時にボーンを取得するにはどうすればいいのでしょうか?

よろしくおねがいします。

avatar image alwei STAFF Oct 01 '17 at 02:49 PM

1.Begin Playでもいいですが、Constrction Scriptでやるのをおすすめします。BPのビューポートタブ上でアタッチしていることを確認できます。

alt text

2.言葉のままです。ルートコンポーネントは一番親となるコンポーネントなので、そのアクターの他のコンポーネントに取り付けることはできません。ルートコンポーネントにコリジョンをつけず、別途コリジョンコンポーネントを作ってください。下記は別途腕にカプセルコンポーネントを作っています。

alt text

3.やり方自体はそのままOnComponentBeginOverlapを使うことで問題ありません。あとはOverlaped Componentはそのままボーンの位置などを扱うことができるので、そのまま距離判定に使ってください。

alt text

avatar image purin52002 Oct 05 '17 at 06:21 AM

ありがとうございます。 おかげさまでコリジョンをボーンにアタッチしボーンの位置を取得することができました。

今回私がおこないことは ある領域(sensor)内にボーン(LeftHandCollision)とオブジェクトが存在したら2つの距離を測定する というものだったのでsensorのオーバーラップイベントが起動した際にボーンとオブジェクトのロケーションを取得しようと思い、以下のようにノードを組んだところsensorにLeftHandCollisionがオーバーラップしていなくてもロケーションを取得することができてしまいました。 alt text

もしかしてオーバーラップしているかを確認する処理が必要でしょうか?

yeah.png (175.6 kB)
avatar image alwei STAFF Oct 05 '17 at 10:58 AM

これだとLeftHandCollisionがオーバーラップしていようが、senserにオーバーラップした瞬間に最後にアクセスしたOverlapped Componentの情報を使用してしまいます。

ノードのラインが接続していないものを利用しようとすると、意図しない挙動になる可能性が高いです。LeftHandCollision自身の情報は直接コンポーネントをGetしてきたものをご利用ください。

(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