Fire 애니메이션 재 셋팅 및 Shooting 동작 (애니메이션 기존 꺼는 견착 상태에서 인데. 바꿔서 일반 돌격쏴 자세에서 플레이 한다.
Fire은 이경우 하면 안된다.
CRifle.cpp
void ACRifle::Fire()
{
CheckTrue(bEquipping); //장착중일때
CheckFalse(bEquipped); //장착 상황에서만 해야한다.
OwnerCharacter->PlayAnimMontage(FireMontage);
}
총을 쏠 때 총의 방향을 정해야 한다. 총의 방향은 총구 앞에 조금더 띄어서 사용하게 된다. 소켓의 방향을 가져와서 총알이 나가게 할 것이다. (총알이 나가면서 충돌체가 총이랑 충돌 할 수 있어서 앞에 위치 시킨다)
임시 위치
소켓 위치 불러오는 것 테스트 (블프)
가끔 가다. 블프에서 Mesh 오류나 경고 같은거. 뜨면 경고 부분을 보면 알 수 있다.
대부분 블루프린트 전용이나. 읽어 들일 수 없게 설정 해두어서. 사용이 안되는 경우가 있다. 공개 처리를 해두면 된다.
protected: // 이부분 (readonly 때문)
UPROPERTY(BlueprintReadOnly, VisibleDefaultsOnly)
class USkeletalMeshComponent* Mesh;
해당 하는 부분에서 언리얼 매크로가 깔려있다는 전제하에 Alt + E 누르면 다시 해당 함수에 대한 매크로 창이 뜨면서 설정을 하나 더 추가 해줄 수 있는 처리 등을 할 수 있다.
노티파이 추가
CRifle.h
public:
void Begin_Fire();
CAnimNotify_Fire.h
#pragma once
#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "CAnimNotify_Fire.generated.h"
UCLASS()
class U2110_03_API UCAnimNotify_Fire : public UAnimNotify
{
GENERATED_BODY()
private:
FString GetNotifyName_Implementation() const override;
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation) override;
};
CAnimNotify_Fire.cpp
#include "CAnimNotify_Fire.h"
#include "Global.h"
#include "05_TPS/IRifle.h"
FString UCAnimNotify_Fire::GetNotifyName_Implementation() const
{
return "Fire";
}
void UCAnimNotify_Fire::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation)
{//오버라이드 되어있는 것
Super::Notify(MeshComp, Animation); //super로 부모먼저 콜 할 수 있도록
CheckNull(MeshComp);
CheckNull(MeshComp->GetOwner());
IIRifle* rifle = Cast<IIRifle>(MeshComp->GetOwner());
CheckNull(rifle);
rifle->Fire_Rifle();
}
IRIfle.h
virtual void Fire_Rifle() = 0;
메터리얼 탄을 쏘는 방식이 있는데. 메터리얼로 꼼수를 주는 방법이 있다.
매터리얼 생성
메터리얼 자식 생성
Color 아무리 해당 하는 것을 많이 줘도 의미 없지만. Emissive컬러는 값이 섞이면서 색이 바뀌는 것을 볼 수 있다. (광선검 같은 것은 Base컬러 * 10 정도를 준다.)
블루프린트 액터를 하나 만들어서 보자
StaticMesh → Sphere → 메터리얼 만들어준 Inst 가져와서 → 크기 조정
총알 날라가는 것처럼 보이게 하는 것을 만들 수 있다.