GrabとRelease

この機能を実装するにあたって三つのBPを編集する必要があります。

  1. PlayerPawnBP InputActionの実装
  2. ControllerBP static mesh bpのインターフェイスを呼び出す関数、コントローラーのOverlapの実装
  3. 掴みたい物のstatic meshをもつstatic mesh bp コントローラーへのアタッチの実装
  4. Interface PickUp,Dropを宣言する、つかめるオブジェクトとつかめないオブジェクトをこれが実装されているか否かで判定します。

以下にBPを分けて掲載します

仕組み概略

  1. ControllerBPでTick毎にGrabActorを呼び出している時を除きGetActorNearHandを呼び出します
  2. GetActorNearHandでMotionControllerについているSphereCollision内のインターフェイスが実装されているオブジェクトで一番距離が近いオブジェクトを返します
  3. PlayerPawnBPでInputAction GrabRight(or Left)のPressedからコントローラーのGrabActorを呼び出します
  4. GrabActorからstaticmeshBPに実装されているPickUPを呼び出します、AttachedActorにGetActorNearHandから返されたオブジェクトを代入します。
  5. PlayerPawnBPでInputAction GrabRight(Left)のReleaseからコントローラーのReleaseActorを呼び出します
  6. ReleaseActorからコントローラーに掴まれているstaticmeshBPのAttachParentが掴んでいるコントローラーであることを確認してstaticmeshBPのDropを呼び出します、またAttachedActorを空にセットします。

Player Pawn BP

Controller BP