Fire 애니메이션 재 셋팅 및 Shooting 동작 (애니메이션 기존 꺼는 견착 상태에서 인데. 바꿔서 일반 돌격쏴 자세에서 플레이 한다.

Fire은 이경우 하면 안된다.

CRifle.cpp

void ACRifle::Fire()
{
	CheckTrue(bEquipping); //장착중일때
	CheckFalse(bEquipped); //장착 상황에서만 해야한다. 

	OwnerCharacter->PlayAnimMontage(FireMontage);
}

총을 쏠 때 총의 방향을 정해야 한다. 총의 방향은 총구 앞에 조금더 띄어서 사용하게 된다. 소켓의 방향을 가져와서 총알이 나가게 할 것이다. (총알이 나가면서 충돌체가 총이랑 충돌 할 수 있어서 앞에 위치 시킨다)

Untitled

임시 위치

Untitled

소켓 위치 불러오는 것 테스트 (블프)

Untitled

Untitled

가끔 가다. 블프에서 Mesh 오류나 경고 같은거. 뜨면 경고 부분을 보면 알 수 있다.

대부분 블루프린트 전용이나. 읽어 들일 수 없게 설정 해두어서. 사용이 안되는 경우가 있다. 공개 처리를 해두면 된다.

protected: // 이부분 (readonly 때문)
	UPROPERTY(BlueprintReadOnly, VisibleDefaultsOnly)
		class USkeletalMeshComponent* Mesh;

해당 하는 부분에서 언리얼 매크로가 깔려있다는 전제하에 Alt + E 누르면 다시 해당 함수에 대한 매크로 창이 뜨면서 설정을 하나 더 추가 해줄 수 있는 처리 등을 할 수 있다.

Untitled

노티파이 추가

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;

메터리얼 탄을 쏘는 방식이 있는데. 메터리얼로 꼼수를 주는 방법이 있다.

  1. 매터리얼 생성

    Untitled

    1. 이미시브 컬러 : 외곽선 컬러 , 이미시브를 활용하면 된다.
      1. 베이스 컬러는 RGB : 0~1 범위 이지만
      2. 이미시브에 있는 컬러는 SRGB : 0~ 범위 없음
  2. 메터리얼 자식 생성

    Untitled

    1. Color 아무리 해당 하는 것을 많이 줘도 의미 없지만. Emissive컬러는 값이 섞이면서 색이 바뀌는 것을 볼 수 있다. (광선검 같은 것은 Base컬러 * 10 정도를 준다.)

      Untitled

    블루프린트 액터를 하나 만들어서 보자

    StaticMesh → Sphere → 메터리얼 만들어준 Inst 가져와서 → 크기 조정

    총알 날라가는 것처럼 보이게 하는 것을 만들 수 있다.

    Untitled