이제 애니메이션 전화을 위한 PlayerController 스크립트를 수정합니다.
이번에 제일 중요한 부분은 충돌 판정입니다. Goal과 Dead존에 들어가면 알맞은 함수를 실행합니다.
private void OnTriggerEnter2D(Collider2D collision) {
if (collision.gameObject.tag == "Goal") {
Goal();
} else if(collision.gameObject.tag =="Dead") {
GameOver();
}
}
FixedUpdate()에서는 이동중이면 PlayerMove, 정지시 PlayerStop, 하늘에 떠 있다면 PlayerJump 애니메이션을 실행합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour{
// 생략
//애니메이션처리
Animator animator; //애니메이터 컨트롤러 참조
public string stopAnim = "PlayerStop";
public string moveAnim = "PlayerMove";
public string jumpAnim = "PlayerJump";
public string goalAnim = "PlayerGoal";
public string deadAnim = "PlayerOver";
string nowAnim = "";
string oldAnim = "";
void Start(){
rbody = GetComponent<Rigidbody2D>();
animator = GetComponent<Animator>();
nowAnim = stopAnim;
oldAnim = stopAnim;
}
// Update is called once per frame
void Update(){
// 생략
}
private void FixedUpdate() {
//생략
if(onGround) {
if(axisH == 0) {
nowAnim = stopAnim;
} else {
nowAnim = moveAnim;
}
} else {
nowAnim = jumpAnim;
}
if(nowAnim != oldAnim) {
oldAnim = nowAnim;
animator.Play(nowAnim);
}
}
public void Jump() {
goJump = true;
}
private void OnTriggerEnter2D(Collider2D collision) {
if (collision.gameObject.tag == "Goal") {
Goal();
} else if(collision.gameObject.tag =="Dead") {
GameOver();
}
}
public void Goal() {
animator.Play(goalAnim);
}
public void GameOver() {
animator.Play(deadAnim);
}
}
'유니티2D게임 > 사이드뷰 게임의 기본 시스템' 카테고리의 다른 글
게임 종료 판정 스크립트 작성 (0) | 2023.05.13 |
---|---|
점프 애니메이션 만들기 (0) | 2023.05.13 |
플레이어 캐릭터의 애니메이션 만들기 (0) | 2023.05.13 |
점프 동작 조정하기 (0) | 2023.05.13 |
[사이드뷰게임] 4.5 플레이어 캐릭터 만들기 (0) | 2023.05.13 |