Priv's Blog
Programming Simple Functionality: Unit 3 - Sound and Effects) Lesson 3.3 - Don't Just Stand There 본문
Programming Simple Functionality: Unit 3 - Sound and Effects) Lesson 3.3 - Don't Just Stand There
Priv 2021. 7. 24. 18:07출처
1. 서언
(영상: 링크 참조)
2. 플레이어의 애니메이션 살펴보기
여러분의 캐릭터가 팔과 다리를 움직이도록 만들기 위해서는, Animation Controller를 살펴봐야 합니다.
(영상: 링크 참조)
플레이어의 애니메이션 컨트롤러(Animation Controller)를 더블 클릭하시고, 다른 레이어를 찾아 States를 더블-클릭하여 animations와 Transitions의 상태 값이 보이도록 만들어주세요.
3. 플레이어가 달리기 시작하도록 만들기
이제 애니메이션 컨트롤러에 익숙해지셨으니, 캐릭터가 실제로 뛰는 것처럼 플레이어가 볼 수 있도록 몇 가지 변수들과 설정들을 조정할 수 있습니다.
(영상: 링크 참조)
- Parameters 탭에서, Speed_f 변수 값을 1.0으로 바꿔주세요.
- Run_Static에서 마우스 우-클릭 > Layer Default State으로 설정
- Run_Static 상태를 한 번 클릭하시고, inspector 창에서 Speed 값을 background 오브젝트와 일치하도록 조정해주세요.
4. 점프 애니메이션 설정하기
달리기 애니메이션은 보기 좋게 잘 나왔지만, 플레이어가 장애물들을 뛰어넘을 때는 여전히 매우 이상하게 보입니다. 다음으로 여러분이 하실 것은, 캐릭터의 발판에 실제 스프링을 집어넣는 점프 애니메이션을 추가하는 것입니다.
(영상: 링크 참조)
- PlayerController.cs 안에, 새로 private Animator playerAnim;을 선언해주세요.
- Start() 안에, playerAnim = GetComponent<Animator>(); 를 기입해주세요.
- if문을 사용하여 플레이어가 점프할 때, 점프를 트리거하도록 만들어주세요:
playerAnim.SetTrigger("Jump_trig");
5. 점프 애니메이션 조정하기
달리기 애니메이션이 실행은 되고 있지만, 완벽하지는 않습니다. 여러분의 캐릭터의 물리 관련 변수 일부를 조정하여 애니메이션이 자연스럽게 보이도록 만들어야 합니다.
(영상: 링크 참조)
- Animator 창에서, Running_Jump 상태를 클릭하시고, inspector에서 Speed 값을 줄여 애니메이션 속도를 낮춰주세요.
- 플레이어의 질량, 점프력, 중력 값을 조정하여 여러분의 점프가 올바르게 보이도록 만들어주세요.
6. 넘어지는 애니메이션 설정하기
달리기와 점프 애니메이션이 모두 완성되었습니다. 하지만 캐릭터에 애니메이션이 필요한 상태 값이 한 가지 더 남아있습니다. 달리기를 이어가던 도중 오브젝트와 충돌했을 때, 캐릭터가 녹아웃된 것처럼 넘어져야 합니다.
(영상: 링크 참조)
- 플레이어가 장애물과 충돌하는 상태에서, Death 부울 값을 true로 설정해주세요.
- 동일한 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. 플레이어가 의식이 없는 상태에서 점프하지 못하도록 만들기
이제 전부 완벽하게 작동하고 있습니다만, 아직 수정해야 할 작은 버그가 한 가지 남아있습니다: 플레이어가 의식이 없는 상태에서도 점프를 할 수 있어서 마치 캐릭터가 제세동 중인 것처럼 보입니다.
(영상: 링크 참조)
- 플레이어가 쓰러진 상태에서 점프하는 것을 방지하시려면, 점프 조건에 && !gameOver를 추가해주세요.
void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && isOnGround && !gameOver)
{
playerRb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
isOnGround = false;
animator.SetTrigger("Jump_trig");
}
}
8. 내용 복습
(영상: 링크 참조)
- 새로 배운 기능들
- 플레이어가 scene을 빠른-페이스로 달리는 애니메이션과 함께 시작하도록 만들기
- 플레이어가 점프할 때, 점프 애니메이션 재생하기
- 플레이어가 충돌했을 때, 플레이어가 쓰러지도록 만들기
- 새로 배운 개념과 기술들
- 애니메이션 컨트롤러 (Animation Controllers)
- Animation States, Layers, Transitions
- 애니메이션 파라미터 (Animation parameters)
- 애니메이션 프로그래밍
- SetTrigger(), SetBool(), SetInt()
- 부정 (!) 연산자
- 다음 시간에 학습할 내용
- 파티클과 사운드 효과를 사용하여 게임이 더 멋지게 보이도록 다듬어보겠습니다!