スポンサーリンク
Weaponクラスの作成
Weapon.hのGENERATED_BODY()以下に下記のコードを入力します。
public: AWeapon(); protected: virtual void BeginPlay() override; public: virtual void OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) override; virtual void OnOverlapEnd(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) override; void Equip(class AMyCharacter* Char);
Weapon.cppにヘッダーファイルを追加します。
#include "MyCharacter.h"
Weapon.cppのOnOverlapBegin関数に以下のコードを追加します。
Super::OnOverlapBegin(OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex, bFromSweep, SweepResult); if (OtherActor) { AMyCharacter* MyChar = Cast<AMyCharacter>(OtherActor); if (MyChar) { Equip(MyChar); } }
OnOverlapEnd関数に以下のコードを追加します。
Super::OnOverlapEnd(OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex);
Weapon.cppにEquip関数を定義します。
if (Char) { GetItemMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); GetItemMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore); GetItemMesh()->SetSimulatePhysics(false); const USkeletalMeshSocket* RightHandSocket = Char->GetMesh()->GetSocketByName("RightHandSocket"); if (RightHandSocket) { RightHandSocket->AttachActor(this, Char->GetMesh()); } }
全て保存を押して一旦UE4エディタを閉じて、Vistual StudioをCtrl+F5でコンパイルしてUE4エディタを起動します。
スポンサーリンク
ブループリントで武器の設定をする
起動後、Weaponクラスをベースにブループリントを作成します。
作成フォルダにBlueprintフォルダを選択し、名前はここではWeapon_BPにしています。
スケルタルメッシュには、アセットプレビューで使用したソードを割り当てます。
メッシュ設定が終わったらコンパイルと保存を押して、Weapon_BPアイコンをエディタ画面内に引っ張ってきます。位置を調整したら完了です。
スポンサーリンク
スポンサーリンク
コメント