플레이어 캐릭터를 중심으로 두고 따라다니는 카메라의 스크립트를 만들어봅니다. CameraManager 스크립트를 Player폴더에 만들고 Main Camera에 어태치합니다.
Update()
"Player" Tag를 찾아 카메라위치로 설정합니다. 결국 카메라가 Player를 따라 다니는것 처럼 됩니다.
카메라의 우선순위를 플레이어보다 높게하기 위해 Z위치를 -10으로 합니다.
void Update() {
GameObject player = GameObject.FindGameObjectWithTag("Player");
if (player != null) {
//플레이어의 위치와 연동
transform.position = new Vector3(player.transform.position.x,
player.transform.position.y, -10);
}
}
플레이어 대미지 처리하기
뒤에서 만들 적캐릭터와 접촉했을 때 받은 대미지를 처리하는 내용을 미리 만들겠습니다. 적과 접촉하면 바로 죽지 않고 HP가 1씩 줄고 뒤로 밀리는 연출을 합니다. 대미지처리는 PlayerController스크립트에 추가합니다.
적방향에서 반대로 밀기위해서 dir = (Player-Enemy).normalized 하면 dir은 적->Player의 방향이 됩니다. 이방향으로 나를 밀어주면 (AddForce) 적으로 부터 멀어지게 됩니다.
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Enemy")
{
GetDamage(collision.gameObject);
}
}
//데미지
void GetDamage(GameObject enemy) {
if (gameState == "playing") {
hp--; //HP감소
if (hp > 0) {
//이동 중지
rbody.velocity = new Vector2(0, 0);
//적 캐릭터의 반대 방향으로 히트백
Vector3 toPos = (transform.position - enemy.transform.position).normalized;
rbody.AddForce(new Vector2(toPos.x * 4,
toPos.y * 4),
ForceMode2D.Impulse);
//데미지 받는 중으로 설정
inDamage = true;
Invoke("DamageEnd", 0.25f);
} else{
//게임 오버
GameOver();
}
}
}
PlayerController는 이미 앞에서 설명을 했습니다. 참조해주시기 바랍니다.
'유니티2D게임 > 탑뷰 액션 게임의 기본시스템 만들기' 카테고리의 다른 글
8.4.x 화살 공격 (0) | 2023.05.22 |
---|---|
8.4.x 소유 아이템을 관리하는 시스템 만들기 (0) | 2023.05.22 |
8.4 플레이어 캐릭터 만들기 (0) | 2023.05.22 |
8.2 탑뷰 새프로젝트 만들기 - 타일맵 (0) | 2023.05.22 |
[PART3] 탑뷰액션게임 만들기 (0) | 2023.05.21 |