인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

새싹부터 시작하는 Unity 게임 개발

애니메이션 (Animation)

애니메이션 점프 적용되지 않는 문제

작성

·

65

·

수정됨

0

새싹부터 시작하는 Unity 게임 개발 섹션3 2D게임 애니메이션

강의 시청 중 점프 애니메이션이 적용되지 않습니다.

 

유니티에서 transition은 아래와 같이 설정한 상태이고

jump run.jpg

 

jump idle.jpg

 

코드는 강의와 똑같이 작성한 상태입니다.

if (Input.GetKeyDown(KeyCode.Space) && isJump == false)
{
    anim.SetTrigger("isJUMP");

    isJump = true;

    anim.SetBool("isIDLE", false);
    anim.SetBool("isRUN", false);
    rigidbody.velocity = new Vector2(rigidbody.velocity.x, jumpPower);
}

if(rigidbody.velocity.y == 0f )
{
    isJump = false;
}

 

JUMP 애니메이션만 다시 재생해보면 점프하는 동작이 나오긴 합니다.

jump.jpg

 

 

강의를 듣던 중

GetComponent<SpriteRenderer>().sprite = JumpSprite;

이런 코드가 있던데 저는 작성하지 않은 상태입니다

혹시 이 코드가 점프가 안 되는 이유 중 하나인지 질문 남깁니다.

답변 2

0

Pinous님의 프로필 이미지
Pinous
지식공유자

안녕하세요, 현대 보내주신 스크린샷 부분에서는 문제를 찾기가 어렵네요,

 

단 점프가 발동되지않는 이유는 여러가지라서 해당 부분 체크 부탁드립니다.

  1. Any State에 jump트리거가 정상적으로 연결이 되었는지

  2. 코드가 정상적으로 실행이 되는지

 

만약 위 내용이 전부 정상이라면 프로젝트 파일을 제 개인 이메일 pinous.g@gmail.com으로 보내주시면 문제 파악 후 회신 드리겠습니다 :)

0

안녕하세요, 인프런 AI 인턴입니다. water_pokemon님.

우선 강의 시청 중 겪고 계신 문제를 해결하는 데 도움을 드리기 위해 몇 가지 유사한 질문들을 살펴보았습니다. 이를 통해 유사한 상황을 겪고 있는 다른 수강생들에게 도움이 된 답변들을 소개해드릴게요.

관련 질문 #1: anim.SetBool

  • 질문 내용 요약: 애니메이션 설정 시 발생하는 오류 및 NullReferenceException 해결 방법.
  • 해결책 요약: Animator 변수가 올바르게 초기화되지 않아서 발생하는 문제로, public Animator anim를 선언하여 인스펙터에서 직접 할당하거나 Start() 메서드에서 anim = GetComponent<Animator>();로 초기화해야 합니다.

참고 코드:

void Start() 
{
    anim = GetComponent<Animator>();
}

관련 질문 #2: 애니메이션 점프 적용되지 않는 문제

  • 질문 내용 요약: 점프 애니메이션이 가능한데 애니메이션 전환이 올바르게 이루어지지 않음.
  • 해결책 요약: 애니메이션 상태 전환 조건 및 트리거 설정 업데이트. GetComponent<SpriteRenderer>().sprite = JumpSprite; 사용 여부에 대한 확인.

참고 코드:

if (Input.GetKeyDown(KeyCode.Space) && isJump == false)
{
    anim.SetTrigger("isJUMP");
    
    isJump = true;
    
    anim.SetBool("isIDLE", false);
    anim.SetBool("isRUN", false);
    rigidbody.velocity = new Vector2(rigidbody.velocity.x, jumpPower);
    
    // Sprite 변경 코드 추가
    GetComponent<SpriteRenderer>().sprite = JumpSprite;
}

해결 방안:

  1. Animator 초기화: 현재 코드를 작성한 방법대로 anim 객체를 초기화했는지 확인합니다.
  2. 애니메이션 전환 조건: 애니메이션 트리거 및 상태 변환 조건을 다시 확인하시기 바랍니다.
  3. 추가 코드 (GetComponent<SpriteRenderer>().sprite) 적용: 강의에서 배운 대로 GetComponent<SpriteRenderer>().sprite = JumpSprite; 코드를 추가해 보세요. 이는 점프 트리거와 연결되어 점프 상태에 맞는 스프라이트로 변경합니다.

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기