본문 바로가기

Unity/Knowledge

④ 몬스터 구현하기 - 몬스터 코딩하기

  3 종류의 몬스터를 생성

ⓑ 랜덤한 위치에서 몬스터가 떨어짐

ⓒ 각 종류마다 랜덤한 크기의 몬스터를 생성

ⓒ 각각의 몬스터마다 점수를 다르게 셋팅

 

몬스터를 먼저 만들어 보도록 하자

하이어라키 창 오른쪽클릭 - 2D Project - Sprites - circle

 

새로 생성시킨 게임 오브젝트의 이름과 이미지를 설정

Redwolf로 이름을 명명하고 붉늑1 이미지를 사용

 

몬스터에게 중력을 부여하기 위해 Unity에서 준비 해 놓은 기능을 활용하자

Add Component - rigidbody 2D

물리에 필요한 힘들 - 중력, 무게, 마찰력 설정 가능

 

파이터에 애니메이션을 입힌 방식과 동일하게 붉늑에게도 애니메이션 컴퍼넌트를 추가

 

몬스터가 떨어지는지 영상을 통해 확인해 보자

 

몬스터가 그라운드에 부딪혔을 때 멈추지 않고 뚫고 지나가는 현상을 제어하기 위해서

Add component - Circle Collider 2D

부딪혀서 멈추는 현상을 구현하기 위함

 

피해자인 그라운드에도 컴퍼넌트를 추가해줘야 한다.

Add component - Box Collider 2D

 

몬스터가 그라운드에 부딪히면 멈추는지 확인해 보자

이렇게 rigidbody와 collider와 같은 

게임엔진을 이용하면 우리가 따로 코드로 구현하지 않아도 손쉽게 컴퍼넌트로 구현이 가능하다.

 

이제 몬스터가 그라운드에 닿았을 때 멈춰있는 것이 아니라 파괴하기 위한 스크립트를 구현해야 한다.스크립트를 생성후 이름을 정해 보자

Redwolf 게임 오브젝트에 들어갈 컴퍼넌트

 

oncolli 만 입력했는데 자동입력칸이 보인다.

OnCollisionEnter2D 더블 클릭

자동으로 코드 뼈대가 완성된 모습

충돌현상은 이 코드 안에 입력하면 된다.

보통 On이라 하면은 "어떤 이벤트 및 현상이 발생했을 때" 라고 생각하면 된다.

Collision은 충돌, Enter는 순간

 

테스트를 위해서 충돌이라는 텍스트가 뜨는지 간단한 코드를 넣어 보자

 

땅에 닿았을 때 몬스터를 파괴하라는 로직을 넣어 보자

If(Collision.gameObject.name == "Ground")

-> 만약에 충돌한다면 게임오브젝트가 "Ground"라는 것에

Destroy(this.gameObject);

-> 파괴해라 이 게임오브젝트를

 

그런데 만약에 게임오브젝트 Ground의 이름이 바뀌게 되면 로직은 작동하지 않게 될 것이다.

Ground 게임 오브젝트에 들어가서 Tag를 달아 주자

 

태그를 달아 줬으므로 이렇게 코드를 입력할 수도 있다.

 

동일한 방법으로 푸늑과 주늑도 만들어 놓자

'Unity > Knowledge' 카테고리의 다른 글

⑤ 몬스터 구현하기 - 랜덤 몬스터  (0) 2024.03.28
④ - Q&A  (0) 2024.03.28
③ - Q&A  (0) 2024.03.28
③ 캐릭터 이동하기  (0) 2024.03.27
② 애니메이션 맛 보기  (0) 2024.03.27