ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 애니메이션 인스턴스 추가
    Game Programming/언리얼 2023. 9. 29. 14:25

    C++클래스에 애니메이션 인스턴스를 추가한다. 

    	void UpdateAnimationProperties(float DeltaTime);
    	virtual void NativeInitializeAnimation() override;

    매 프레임 마다 애니메이션을 업데이트하는 UpdateAnimationProperties 함수와

    생성자에 해당하는 NativeInitializeAnimation를 상속 받는다.

    private:
    	
    	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true"))
    	class AMyCharacter* MyCharacter;
    
    	/*The speed of the character */
    	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true"));
    	float Speed;
    	/* Whether or not the chracter is in the air*/
    	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true"));
    	bool bIsInAir;
    	/*Wheter or not the chracter is moving*/
    	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true"));
    	bool bIsAccelerating;

    애니메이션이 들고 있는 케릭터를 추가

    스피드, 공기 중에 있는지, 가속도 중인지 알 수 있는 변수를 선언한다.

    void UMyAnimInstance::UpdateAnimationProperties(float DeltaTime)
    {
    	if (MyCharacter == nullptr)
    	{
    		MyCharacter = Cast<AMyCharacter>(TryGetPawnOwner());
    	}
    
    	if (MyCharacter)
    	{
    		// Get the lateral speed of the chracter from velocity
    		FVector Velocity{ MyCharacter->GetVelocity() };
    		Velocity.Z = 0.f;
    
    		Speed = Velocity.Size();
    
    		// Is the character in the air ?
    		bIsInAir = MyCharacter->GetCharacterMovement()->IsFalling();
    
    		// Is the chracter accerlating?
    		if (MyCharacter->GetCharacterMovement()->GetCurrentAcceleration().Size() > 0)
    		{
    			bIsAccelerating = true;
    		}
    		else
    		{
    			bIsAccelerating = false;
    		}
    	}
    }

    자신을 소유하는 폰을 캐스팅한다.

    속도는 X,Y축에 대한 속도를 사용한다. (Velocity.Z = 0.f;)

    CharacterMovementComponent에 있는 Falling함수와, GetCurrentAcceleration().Size() 함수를 사용해 공기 중에 있는지 가속도 중인지 확인한다.

     

    MyProject에 애니메이션 블루프린트를 추가한다.

    이벤트 그래프에서 Update Animation Properties를 연결 시키고 Deltatime을 준다.

    'Game Programming > 언리얼' 카테고리의 다른 글

    Fire Weapone  (0) 2023.09.29
    Rotator Character to Movement  (0) 2023.09.29
    케릭터 점프, 마우스 회전  (0) 2023.09.29
    카메라 이동, 회전  (0) 2023.09.29
    카메라 스프링 암  (0) 2023.09.26
Designed by Tistory.