일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 유니티
- 코테
- c++
- 백준 17070번 c++
- Algorithm
- Lv2
- 코딩테스트
- 플레이어 이동
- 2468 c++
- 백준 2870번
- dfs
- 2870번 수학숙제 c++
- 17070번
- 2870번
- 오브젝트 풀링
- 백준 c++ 2468번
- 백준 1103번 게임
- C#
- 백준
- Lv.3
- 백준 c++ 2870번
- 백준 17070번
- 2870번 c++
- 백준 1103번
- 2870번 수학숙제
- Unity
- 수학숙제
- Beakjoon
- 프로그래머스
- 백준 1103번 c++
- Today
- Total
주녘공부일지
[ShootingGame] 4. 적 전투와 피격 이벤트 만들기 본문
1. 생성된 적 이동

- 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. 적 공격




- Circle Collider2D, Box Collider2D 로 충돌 범위 지정, 트리거 활성화
- Rigidbody2D 컴포넌트 추가한 Enemy Bullet A,B
- 플레이어에서 사용한 로직을 재활용하여 Type A, B를 Enemy 클래스가 가지고 있게 함

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 )

- OnTriggerEnter2D에 적 기체와 적 총알 타입을 추가하여 피격 이벤트를 발생
- 매니저의 RespawnPlayer() 함수를 호출하고 플레이어는 비활성화 상태로 변경
- 플레이어를 죽게 만든 객체 파괴

- 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
'GameDevelopment > [Unity] Lecture' 카테고리의 다른 글
[ShootingGame] 6. 아이템과 필살기 구현하기 (0) | 2022.01.29 |
---|---|
[ShootingGame] 5. UI 간단하게 완성하기 (0) | 2022.01.28 |
[ShootingGame] 3. 적 비행기 만들기 (0) | 2022.01.27 |
[ShootingGame] 2. 총알 발사 구현하기 (0) | 2022.01.26 |
[ShootingGame] 1. 플레이어 이동 구현 (0) | 2022.01.25 |