주녘공부일지

[ShootingGame] 4. 적 전투와 피격 이벤트 만들기 본문

GameEngine/Unity - Lecture

[ShootingGame] 4. 적 전투와 피격 이벤트 만들기

주녘 2022. 1. 28. 17:51
728x90

Scripts.zip
0.00MB

 

 

1. 생성된 적 이동

 

class GameManager - SpawnEnemy()

 

- ranEnemy, ranPoint로 적 기체의 종류와 생성될 위치를 랜덤으로 지정하고, Instantiate()로 생성

- enemyLogic 변수로 Enemy 를 가져와 생성 직후에 플레이어에 대한 정보를 넘겨줌

 

- ranPoint 5,6번은 우측에 존재하는 스폰포인트이기 때문에 이동방향에 -1을 곱하여 좌측 대각선으로 이동하게 설정하고 우측에서 생성되기 때문에 생성될 적 기체 이미지를 back 기준으로 90도 회전

 ( 7,8번은 반대쪽이기 때문에 오른쪽으로 이동 )

- 외에는 위에서 아래로 이동

 

gameObj.transform.Rotate(back or forward * 각도);

- 2D에선 back, forward만 사용 // back : z축 -1 방향 ( 반대방향이라고 생각하면 편하다. )

 

velocity = new Vector2(x축 속력, y축 속력);

https://godgjwnsgur7.tistory.com/3

 

[Unity] Rigidbody2D ( + AddForce, Velocity )

Rigidbody2D : 오브젝트를 물리 엔진이 제어하게 만듬 Body Type - Dynamic : 밀어내는 등 물리연산 o - Kinematic : 밀어내는 등 물리연산 x ( 물리연산이 없기 때문에 충돌감지만 가능해짐 -> 로직을 짜서 막

godgjwnsgur7.tistory.com

 

2. 적 공격

 

class Enemy

- Circle Collider2D, Box Collider2D 로 충돌 범위 지정, 트리거 활성화

- Rigidbody2D 컴포넌트 추가한 Enemy Bullet A,B

- 플레이어에서 사용한 로직을 재활용하여 Type A, B를 Enemy 클래스가 가지고 있게 함

 

class Player - Fire()

 

Fire() // Update()문에서 실행

- 플레이어 로직과 같은 로직으로 딜레이를 주고 딜레이 시간이 되면 enemyName을 적 기체의 타입에 따라 다른 행동을 하도록 설정하고 Instantiate()로 생성하고 AddForce로 속력(가속력 - Impulse) 부여하여 총알 발사

https://godgjwnsgur7.tistory.com/3

 

[Unity] Rigidbody2D ( + AddForce, Velocity )

Rigidbody2D : 오브젝트를 물리 엔진이 제어하게 만듬 Body Type - Dynamic : 밀어내는 등 물리연산 o - Kinematic : 밀어내는 등 물리연산 x ( 물리연산이 없기 때문에 충돌감지만 가능해짐 -> 로직을 짜서 막

godgjwnsgur7.tistory.com

 

 + 총알을 쏘는 방향은 플레이어 위치 - 자신의 위치(목표물로 방향)로 dirVec를 초기화하고, dirVec.normallized를 사용하여 단위벡터로 변환하여 인자로 넣음

https://docs.unity3d.com/kr/530/ScriptReference/Vector3.Normalize.html

 

Unity - 스크립팅 API: Vector3.Normalize

벡터가 정규화(normalized)되면, 벡터는 갖은 방향값을 갖지만, 정규화 벡터의 길이는 1.0입니다. 이 함수는 현재 벡터를 변경한다는 점을 주의하십시오. 현재 벡터가 변경되지 않도록 하고 싶은 경

docs.unity3d.com

 

3. 피격 이벤트 ( Class Player, Class GameManager )

 

Class Player - OnTriggerEnter2D()

 

- OnTriggerEnter2D에 적 기체와 적 총알 타입을 추가하여 피격 이벤트를 발생

- 매니저의 RespawnPlayer() 함수를 호출하고 플레이어는 비활성화 상태로 변경

- 플레이어를 죽게 만든 객체 파괴

 

Class GameManager

 

- Invoke 함수로 2초 딜레이를 주고 위치를 처음 위치로 변경한 뒤 다시 활성화

 

https://github.com/godgjwnsgur7/ShootingGame

 

GitHub - godgjwnsgur7/ShootingGame

Contribute to godgjwnsgur7/ShootingGame development by creating an account on GitHub.

github.com

 

강의 출처

https://www.youtube.com/watch?v=OI7BvnN4zLE&list=PLO-mt5Iu5TeYtWvM9eN-xnwRbyUAMWd3b&index=4 

 

728x90