Priv's Blog

Programming Simple Functionality: Unit 3 - Sound and Effects) Lesson 3.3 - Don't Just Stand There 본문

Unity Learn/Pathway: Junior Programmer

Programming Simple Functionality: Unit 3 - Sound and Effects) Lesson 3.3 - Don't Just Stand There

Priv 2021. 7. 24. 18:07

출처

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

 

1. 서언


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 


 

2. 플레이어의 애니메이션 살펴보기

여러분의 캐릭터가 팔과 다리를 움직이도록 만들기 위해서는, Animation Controller를 살펴봐야 합니다.

 


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

플레이어의 애니메이션 컨트롤러(Animation Controller)를 더블 클릭하시고, 다른 레이어를 찾아 States를 더블-클릭하여 animations와 Transitions의 상태 값이 보이도록 만들어주세요.

 


 

3. 플레이어가 달리기 시작하도록 만들기

이제 애니메이션 컨트롤러에 익숙해지셨으니, 캐릭터가 실제로 뛰는 것처럼 플레이어가 볼 수 있도록 몇 가지 변수들과 설정들을 조정할 수 있습니다.

 


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

  1. Parameters 에서, Speed_f 변수 값을 1.0으로 바꿔주세요.
  2. Run_Static에서 마우스 우-클릭 > Layer Default State으로 설정
  3. Run_Static 상태를 한 번 클릭하시고, inspector 창에서 Speed 값을 background 오브젝트와 일치하도록 조정해주세요.

 


 

4. 점프 애니메이션 설정하기

달리기 애니메이션은 보기 좋게 잘 나왔지만, 플레이어가 장애물들을 뛰어넘을 때는 여전히 매우 이상하게 보입니다. 다음으로 여러분이 하실 것은, 캐릭터의 발판에 실제 스프링을 집어넣는 점프 애니메이션을 추가하는 것입니다.

 


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

  1. PlayerController.cs 안에, 새로 private Animator playerAnim;을 선언해주세요.
  2. Start() 안에, playerAnim = GetComponent<Animator>(); 를 기입해주세요.
  3. if을 사용하여 플레이어가 점프할 때, 점프를 트리거하도록 만들어주세요:
    playerAnim.SetTrigger("Jump_trig");

 

 


 

5. 점프 애니메이션 조정하기

달리기 애니메이션이 실행은 되고 있지만, 완벽하지는 않습니다. 여러분의 캐릭터의 물리 관련 변수 일부를 조정하여 애니메이션이 자연스럽게 보이도록 만들어야 합니다.

 


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

  1. Animator 창에서, Running_Jump 상태를 클릭하시고, inspector에서 Speed 값을 줄여 애니메이션 속도를 낮춰주세요.
  2. 플레이어의 질량, 점프력, 중력 값을 조정하여 여러분의 점프가 올바르게 보이도록 만들어주세요.

 


 

6. 넘어지는 애니메이션 설정하기

달리기와 점프 애니메이션이 모두 완성되었습니다. 하지만 캐릭터에 애니메이션이 필요한 상태 값이 한 가지 더 남아있습니다. 달리기를 이어가던 도중 오브젝트와 충돌했을 때, 캐릭터가 녹아웃된 것처럼 넘어져야 합니다.

 


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

  1. 플레이어가 장애물과 충돌하는 상태에서, Death 부울 값을 true로 설정해주세요.
  2. 동일한 if 안에서, DeathType 정수 값을 1로 설정해주세요.

 

public bool gameOver = false;

private void OnCollisionEnter(Collision collision)
{
     if (collision.gameObject.CompareTag("Ground"))
     {
          isOnGround = true;
     }
     else if (collision.gameObject.CompareTag("Obstacle"))
     {
          Debug.Log("Game Over");
          gameOver = true;
          playerAnim.SetBool("Death_b", true);
          playerAnim.SetInteger("DeathType_int", 1);
     }
}

 


 

7. 플레이어가 의식이 없는 상태에서 점프하지 못하도록 만들기

이제 전부 완벽하게 작동하고 있습니다만, 아직 수정해야 할 작은 버그가 한 가지 남아있습니다: 플레이어가 의식이 없는 상태에서도 점프를 할 수 있어서 마치 캐릭터가 제세동 중인 것처럼 보입니다.

 


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

  1. 플레이어가 쓰러진 상태에서 점프하는 것을 방지하시려면, 점프 조건&& !gameOver를 추가해주세요.

 

void Update()
{
     if (Input.GetKeyDown(KeyCode.Space) && isOnGround && !gameOver)
     {
          playerRb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
          isOnGround = false;
          animator.SetTrigger("Jump_trig");
     }
}

 


 

8. 내용 복습


(영상: 링크 참조)

 

Lesson 3.3 - Don't Just Stand There - Unity Learn

Overview: The game is looking great so far, but the player character is a bit… lifeless. Instead of the character simply sliding across the ground, we’re going to give it animations for running, jumping, and even death! We will also tweak the speed of

learn.unity.com


 

- 새로 배운 기능들

  • 플레이어가 scene을 빠른-페이스로 달리는 애니메이션과 함께 시작하도록 만들기
  • 플레이어가 점프할 때, 점프 애니메이션 재생하기
  • 플레이어가 충돌했을 때, 플레이어가 쓰러지도록 만들기

 

- 새로 배운 개념과 기술들

  • 애니메이션 컨트롤러 (Animation Controllers)
  • Animation States, Layers, Transitions
  • 애니메이션 파라미터 (Animation parameters)
  • 애니메이션 프로그래밍
  • SetTrigger(), SetBool(), SetInt()
  • 부정 (!) 연산자

 

- 다음 시간에 학습할 내용

  • 파티클과 사운드 효과를 사용하여 게임이 더 멋지게 보이도록 다듬어보겠습니다!

 


 


수고하셨습니다!


Comments