inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템

Multi Layered State Machine

Dead 애니메이션 출력 오류입니다.

189

냅또

작성한 질문수 1

0

image.png

현재 이렇게 되어있는 상태인데 왜인지 Dead 애니메이션만 실행이 안돼요... 코드는 그대로 복붙한 상태라 애니메이터 쪽이 문제인 것 같은데 뭐가 문제인 걸까요??

unity modules

답변 3

0

냅또

감사합니다! 해결 완료 했습니다.

추가적으로, 현재 수업자료의 EntityBaseLayerBehaviour.cs에는 kIsDead 변수와 animator.SetBool(kIsDead, entity.IsDead); 부분이 제외되어 있어 Dead 애니메이션이 실행되지 않는 것도 있더라구요..

해당 코드 추가했을 때 Dead 애니메이션이 무한히 반복되는 부분은 해결하지 못했었는데 CanTransitionToSelf option을 꺼주니 바로 해결되었습니다! 감사합니다 :)

public class EntityBaseLayerBehaviour : StateMachineBehaviour
{
    private readonly static int kSpeedHash = Animator.StringToHash("speed");
    private readonly static int kIsRollingHash = Animator.StringToHash("isRolling");
    private readonly static int kIsDead = Animator.StringToHash("isDead"); // 해당 코드 추가

    private Entity entity;
    private NavMeshAgent agent;
    private EntityMovement movement;

    // OnStateEnter is called before OnStateEnter is called on any state inside this state machine
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        if (entity != null)
            return;

        entity = animator.GetComponent<Entity>();
        agent = animator.GetComponent<NavMeshAgent>();
        movement = animator.GetComponent<EntityMovement>();
    }

    // OnStateUpdate is called before OnStateUpdate is called on any state inside this state machine
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        if (agent)
            animator.SetFloat(kSpeedHash, agent.desiredVelocity.sqrMagnitude / (agent.speed * agent.speed));
        
        if (movement)
            animator.SetBool(kIsRollingHash, movement.IsRolling);
        
        animator.SetBool(kIsDead, entity.IsDead); // 해당 코드 추가
    }

0

Developer G

수강해주셔서 감사합니다.

 

Transition Setting을 보시면 CanTransitionToSelf Option이 켜져있는데, 이러면 isDead가 true일 때 Dead Animation이 무한히 재실행되게 됩니다. 해당 Option을 꺼주시면 해결이 될 것 같습니다.

다만, 이미지만으로는 정확한 문제를 판단하기 힘들기 때문에 위 방법으로 해결이 안되신다면 수업 자료로 첨부된 완성된 프로젝트를 여셔서 Animator 설정을 비교해보시는게 빠른 해결에 도움이되실 것 같습니다.

 

추가적인 도움이 필요하시거나 질문이 있으시면 언제든지 글을 써주세요.

 

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
Dead 애니메이션이 실행되지 않는 문제는 여러 가지 원인이 있을 수 있습니다. Animator 창에서 문제가 발생할 수 있는 몇 가지 일반적인 이유와 해결 방법을 설명드릴게요.

  1. Transition Condition:

    • Dead 상태로 전이(transition)되는 조건이 잘 설정되어 있는지 확인하세요. 예를 들어, 특정 트리거(trigger)나 bool parameter가 필요하다면, 그 파라미터가 올바르게 설정되었는지 확인해야 합니다.
  2. Parameter 설정:

    • Animator에 필요한 Parameter가 제대로 설정되어 있는지 확인하세요. 트리거나 Bool 타입의 파라미터가 설계 그대로 이름과 타입이 맞는지 확인합니다.
  3. State 연결:

    • Dead 상태로의 연결(transition)이 제대로 되어 있는지 체계적으로 확인하십시오. Entry state나 다른 state로부터 Dead 상태로 이동하는 경로가 부재할 수도 있습니다.
  4. 디버그(Logs):

    • 스크립트에서 애니메이션이 출력되어야 할 시점에 로그를 찍어 현재 상태를 확인해보세요. 코드가 통제 범위를 넘어설 경우를 대비하여 디버깅이 필요할 수 있습니다.
  5. Animator Controller:

    • Inspector Panel에서 Dead 애니메이션의 Loop Time 옵션이 활성화되어 있지 않은지 확인하세요. Death 애니메이션은 일반적으로 한번 실행되고 끝나야 하므로, 이 설정이 잘못 설정되어 있을 수 있습니다.

이에 대한 더 깊은 설명이나 다른 유사 경험이 있는 학습자들의 질문은 아래 두 링크에서 유용한 정보를 찾으실 수 있습니다:
- Error Stack을 통한 유니티 유사 오류 조사 및 해결 방법
- IndexOutOfRange 등의 유사 오류 설명 및 솔루션 제공

이 외에 설정을 점검해도 문제가 지속된다면, 유니티 폴더 내에서 이상 상태가 있는지 확인하시고, 관련 로그를 통해 추가적인 문제를 파악해보시는 것도 좋은 방법입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Indicator와 SelectionAction 및 SearchAction 간의 관계에 대해 질문있습니다.

0

70

2

ChargingState에서 질문이 있습니다.

0

49

1

Effect.GetData 함수 질문있습니다.

0

45

2

CanTransitionToSelf 질문 있습니다.

0

53

2

Stat의 MaxValue에 관하여 질문이 있습니다.

0

42

1

Stat vs StatScaleFloat

0

75

4

애니매이션 버그가 있는것 같습니다.

0

65

2

StatsOverride질문이 있습니다.

0

50

2

SetBonusValue함수 질문있습니다.

0

46

2

오늘 수강시작한 취준생입니다.

0

49

1

사소하지만 에디터 관련 질문있습니다

0

69

1

스킬시스템을 데이터 테이블화 하는 법에 대해 감이안잡혀서 질문드립니다.

0

146

2

TargetSearcher에 대해서 질문이 있습니다

0

52

1

돌진해서 몸박을하면 피격자를 날리면서 데미지를 입히는 스킬은 이 시스템에서 어떻게 만들 수 있을까요??

0

116

2

스킬 관련 질문입니다

0

110

2

통일된 Stat을 사용하지 않고 모듈화 방식으로 Stats를 만드신 이유가 궁금합니다.

0

152

1

Effect에 기능 확장에 대해서 질문이 있습니다.

0

149

2

SkillData 구조체 질문

0

122

1

스킬트리 저장 질문입니다

0

135

2

BT와 FSM을 활용해 몬스터 AI 구현

0

350

2

MonoStateMachine을 만든 이유가 잘 이해가 가지 않습니다.

0

128

1

근접 콤보 공격을 만들고 싶습니다.

0

153

1

하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.

0

190

1

올해에 예정된 새로운 강의가 있으신지요?

0

115

2