diff --git a/Content/Weapons/FPWeapon/Mesh/SK_FPGun.uasset b/Content/Weapons/FPWeapon/Mesh/SK_FPGun.uasset index 02401c5..a14002a 100644 --- a/Content/Weapons/FPWeapon/Mesh/SK_FPGun.uasset +++ b/Content/Weapons/FPWeapon/Mesh/SK_FPGun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7536801d9352ead64546033204c7fa4bacb57eddb5590f771a2b65b08e21bba8 -size 2283243 +oid sha256:ac9b19b304766ffe0be58e83a9e49328d70fbd1110291876757d11a05c6717c6 +size 2698843 diff --git a/Content/Weapons/FPWeapon/Mesh/SK_FPGun_Physics.uasset b/Content/Weapons/FPWeapon/Mesh/SK_FPGun_Physics.uasset index 2cf9399..3512216 100644 --- a/Content/Weapons/FPWeapon/Mesh/SK_FPGun_Physics.uasset +++ b/Content/Weapons/FPWeapon/Mesh/SK_FPGun_Physics.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a23b5f804d5f7cce10b04c7bd9694e3fd6a2d4d2e358fb7cd6b0ab8b39ba22ce -size 9675 +oid sha256:19689e9452ae7ea6e8d708de746014e685cc4e06944e15c04ce3ab5448d73515 +size 9607 diff --git a/Content/Weapons/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset b/Content/Weapons/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset index 36668c1..bd933fa 100644 --- a/Content/Weapons/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset +++ b/Content/Weapons/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41c5e40fc915b176735416e9ef97faaa0f4000fb90a452669ce50ab4befaafec -size 9700 +oid sha256:6f750d09ee18675c30a5548af8cb41cbd70eec37c8ec593c9869b59b56c82f64 +size 10137 diff --git a/Content/Weapons/Machinegun/BP_Machinegun.uasset b/Content/Weapons/Machinegun/BP_Machinegun.uasset new file mode 100644 index 0000000..3e373fb --- /dev/null +++ b/Content/Weapons/Machinegun/BP_Machinegun.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27f5d5f93b352ca600aa9aaadd01e4e2c413b5db7d3f060b03dc1ff15503036f +size 49125 diff --git a/Content/Weapons/Machinegun/BP_MachinegunThrowable.uasset b/Content/Weapons/Machinegun/BP_MachinegunThrowable.uasset new file mode 100644 index 0000000..903e871 --- /dev/null +++ b/Content/Weapons/Machinegun/BP_MachinegunThrowable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb1ed53c959a66ec5e42d945221a8e024e76d511d533c13b1f36e14089cbc796 +size 28086 diff --git a/Content/Weapons/Machinegun/Machinegun.uasset b/Content/Weapons/Machinegun/Machinegun.uasset index 0935028..0126e14 100644 --- a/Content/Weapons/Machinegun/Machinegun.uasset +++ b/Content/Weapons/Machinegun/Machinegun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed7bb2376bf99eb07ed8eed97992f02c386c762f648d0054d6e26b6ab07c751a -size 55839 +oid sha256:b4d8bd23e948432b0b1c5a14192537c661f272ed0d1c5f740e4256ab5a7ef3ed +size 57405 diff --git a/Content/Weapons/Machinegun/MachinegunThrowable.uasset b/Content/Weapons/Machinegun/MachinegunThrowable.uasset index 7006f30..f27ee8d 100644 --- a/Content/Weapons/Machinegun/MachinegunThrowable.uasset +++ b/Content/Weapons/Machinegun/MachinegunThrowable.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ff985d2950e8633b23fcc8b8f91b76226becb410b49acd1f96664f47d0f1f47 -size 23556 +oid sha256:ef49034b6f6d368cc3dce0b02d566362b0b7cd42a684d969ee1e5b1cf0a1c6d5 +size 27552 diff --git a/Source/Nakatomi/Throwable.cpp b/Source/Nakatomi/Throwable.cpp index 8b7dafc..ddcc544 100644 --- a/Source/Nakatomi/Throwable.cpp +++ b/Source/Nakatomi/Throwable.cpp @@ -19,6 +19,15 @@ AThrowable::AThrowable() StaticMeshComponent->SetGenerateOverlapEvents(true); StaticMeshComponent->SetNotifyRigidBodyCollision(true); SetRootComponent(StaticMeshComponent); + + SphereComponent = CreateDefaultSubobject(TEXT("SphereComponent")); + SphereComponent->SetSphereRadius(25.0f, true); + SphereComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndProbe); + SphereComponent->SetCollisionObjectType(ECC_WorldDynamic); + SphereComponent->SetSimulatePhysics(true); + SphereComponent->SetGenerateOverlapEvents(true); + SphereComponent->SetNotifyRigidBodyCollision(true); + SphereComponent->SetupAttachment(RootComponent); } // Called when the game starts or when spawned diff --git a/Source/Nakatomi/Throwable.h b/Source/Nakatomi/Throwable.h index 5e23632..642ddce 100644 --- a/Source/Nakatomi/Throwable.h +++ b/Source/Nakatomi/Throwable.h @@ -17,9 +17,8 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, meta = (ClampMin = "0.0", ClampMax = "1.0")) float ImpulseAngle = 0.5f; - -protected: - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) + + UPROPERTY(VisibleAnywhere, BlueprintReadWrite) USphereComponent* SphereComponent; public: diff --git a/Source/Nakatomi/Weapon.h b/Source/Nakatomi/Weapon.h index befb69b..7b232d9 100644 --- a/Source/Nakatomi/Weapon.h +++ b/Source/Nakatomi/Weapon.h @@ -28,8 +28,8 @@ class NAKATOMI_API AWeapon : public AActor { GENERATED_BODY() -protected: - UPROPERTY(BlueprintReadWrite) +public: + UPROPERTY(VisibleAnywhere, BlueprintReadWrite) USkeletalMeshComponent* WeaponSkeletalMeshComponent; UPROPERTY(EditDefaultsOnly) diff --git a/Source/Nakatomi/WeaponThrowable.cpp b/Source/Nakatomi/WeaponThrowable.cpp index b7c36c1..ba81ea0 100644 --- a/Source/Nakatomi/WeaponThrowable.cpp +++ b/Source/Nakatomi/WeaponThrowable.cpp @@ -9,7 +9,7 @@ AWeaponThrowable::AWeaponThrowable() { WeaponSkeletalMeshComponent = CreateDefaultSubobject(TEXT("Skeletal Mesh Component")); - WeaponSkeletalMeshComponent->SetCollisionProfileName(FName("BlockAll")); + WeaponSkeletalMeshComponent->SetCollisionProfileName(FName("OverlapAll")); WeaponSkeletalMeshComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); WeaponSkeletalMeshComponent->SetCollisionObjectType(ECC_WorldDynamic); WeaponSkeletalMeshComponent->SetSimulatePhysics(true); @@ -22,7 +22,7 @@ void AWeaponThrowable::BeginPlay() { Super::BeginPlay(); - WeaponSkeletalMeshComponent->OnComponentHit.AddDynamic(this, &AWeaponThrowable::OnOverlapBegin); + WeaponSkeletalMeshComponent->OnComponentBeginOverlap.AddDynamic(this, &AWeaponThrowable::OnSphereBeginOverlap); auto playerCharacter = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); auto playerForwardVector = playerCharacter->GetActorForwardVector(); @@ -43,3 +43,20 @@ void AWeaponThrowable::SetWeaponSkeletalMesh(USkeletalMesh* SkeletalMesh) WeaponSkeletalMeshComponent->AddImpulse(playerForwardVector * ImpulseForce); } } + +void AWeaponThrowable::OnSphereBeginOverlap(UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult &SweepResult) +{ + if (!OtherActor->ActorHasTag(FName("Player")) && OtherActor != this) + { + if (HealthComponent) + { + HealthComponent->TakeDamage(this, HealthComponent->GetMaxHealth(), nullptr, + nullptr, this); + } + } +} diff --git a/Source/Nakatomi/WeaponThrowable.h b/Source/Nakatomi/WeaponThrowable.h index 6b2bebd..d10a992 100644 --- a/Source/Nakatomi/WeaponThrowable.h +++ b/Source/Nakatomi/WeaponThrowable.h @@ -28,4 +28,13 @@ protected: public: void SetWeaponSkeletalMesh(USkeletalMesh* SkeletalMesh); + +private: + UFUNCTION() + void OnSphereBeginOverlap(UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult &SweepResult); };