スポンサーリンク
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アイコンをエディタ画面内に引っ張ってきます。位置を調整したら完了です。
スポンサーリンク
スポンサーリンク







コメント