[ Random하게 Asteroid 캐릭터 생성하기 ]
동적으로 Asteroid 생성하기
Asteroid prefab으로 만듬
Hierarchy View에 있는 Asteroid01는 삭제
EnemyCreater(GameObject)를 생성
Menu : GameObject >> Create Empty
EnemyCreater로 이름 바꾸기
[ Instantiate & Destroy ]
Instantiate : 프리팹(Prefab)에 있는 객체를 생성하는 함수
Destroy : 만든 GameObject를 파괴하는 함수(Hierarchy View에서 사라짐)
동적으로 Asteroid01를 생성하고 삭제하기
Asteroid01을 prefab으로 만듬
Hierarchy View에 있는 Asteroid01은 삭제
EnmeySpawner.cs 생성
EnemySpawner.cs를 EnemyCreator에 붙이기
EnemyCreater >> EnemySpawner(Script Component) >> Enemy에 prefab으로 만든 Asteroid01을 연결
<Source> EnemySpawner01.cs => [프로그램] Part01 Source
Random 위치로 Asteroid01을 생성하기
EnemySpawner의 public 변수 세팅
Enemy : enemy01(생성시키고자 하는 enemy의 prefab)
Left Spawn Pos X : -5
Right Spawn Pos X : 5
Pos Y : 7
Min Time BetweenSpawns : 2
Max Time BetweenSpawns : 3
<Source> EnemySpawner02.cs => [프로그램] Part01 Source
[ Enemy01 패턴 만들기 ]
생성될 때 Hero가 존재하는 위치로 움직여 내려오게 하기
EnemyPattern01.cs 생성후 Enemy01에 Script 삽입하기
Vector3.Normalize(Hero위치 - 자신위치);
Noramlize : 단위 벡터로 만들어줌
<Source> EnemyPattern01.cs => [프로그램] Part01 Source
rigidbody2D가 빠져있는 경우 추가해야 함
동적으로 적(Enemy01) 생성하기
위에서 설명한 것 처럼 EnemyCreator를 만들어서 활용함
[ Hero 미사일(Missile) 만들기 ]
Bullet GameObject 만들기
Menu : GameObject >> Create Other >> Sprite ( Sprite를 만들어 Hierachy View로 가져오면 저절로 생성됨)
Sample의 Assets/Sprites/prop/Herobullet.png 복사해 오기
HeroMissile 이미지를 Hierarchy View로 끌어 올림
Rigidbody2D 추가
Gravity: 0
BoxCollider 추가
Is Trigger : check
Size는 좀 더 작게
HeroMissile 움직이게 하기
기존에 만들었던 LineMove.cs 삽입하기
Speed : 3으로 세팅
HeroMissilet을 prefab으로 만듬
[ Hero 총알 발사 ]
Hero Object 하위에 Empty Object를 만들고 이름을 ShotPos라고 함
위치는 HeroMissile이 나가는 위치로 설정
일정간격으로 총알이 지속적으로 발사될 수 있도록 하기
ShootEveryTimeStep.cs 생성
Hero Object에 Script 추가함
ShotEveryTiimeStep.cs의 public 변수 처리
Missile : prefab으로 만든 HeroMissile을 연결
SotSpawn : Hero 밑에 있는 ShotPos를 연결
TimeStep : 0.2 (0.2초마다 발사됨)
<Source> ShotEveryTimeStemp.cs => [프로그램] Part01 Source
[ 미사일로 적캐릭터 없애기 ]
Astroid01 처리하기
Asteroid01(Prefab)을 Hierarchy창으로 가져오기
BoxCollider2D 추가하기
Is Trigger : Check
[Collider 충돌]
OnTriggerEnter2D(Collider2D other) : 자신의 Collider2D 와 충돌된 다른 Collider2D의 레퍼런스를 "other"로 넘겨주는 함수
HeroMissile(prefab)의 Tag를 "HeroMissle"로 만듬
<Source> EnemiesCollision.cs => [프로그램] Part01 Source
Asteroid에 Script 삽입
Enemy01 처리하기
Asteroid01에서 한 것처럼 처리하기
[ 주인공 캐릭터 충돌 처리 ]
적캐릭터의 공격을 받을 경우 처리
Enemy 캐릭터에 Tag를 "Enemy"로 설정
EnemyMissile에는 Tag를 "EnemyMissile"로 설정
HeroesCollision.cs를 생성후 Hero Object에 삽입
<Source> HeroesCollision01.cs => [프로그램] Part01 Source
주인공 캐릭터가 게임에 사라졌을 때의 예외 처리
EnemyPattern01.cs에서 Hero를 찾는 부분에 대한 처리를 해줘야 함
<Source> EnemyPattern0102.cs => [프로그램] Part01 Source
[ Enemy02 패턴 만들기 ]
Enemy01을 만들듯이 Eenmy02 객체 만들기
Sprite 처리
Animation 처리
Rigidbody2D 처리
Collider2D 처리
적 캐릭터 총알 발사하기
EnemyMissile 생성
HeroMissile의 prefab을 만든 것처럼 EnemyMissile을 생성
Enemy02에 ShotPos 추가 (Hero에서 한것 처럼)
ShootEveryTimeStep.cs 추가
Missile : prefab으로 만든 EnemyMissile을 연결
SotSpawn : Enemy02 밑에 있는 ShotPos를 연결
TimeStep : 2 (2초마다 발사됨)
적캐릭터 움직이기
좌, 우로 움직이게 하기
<Source> EnemyPattern02.cs => [프로그램] Part01 Source
동적으로 생성되게 하기
EnemyCreater(GameObject)를 생성해서 Enemy02가 동적으로 생성될 수 있도록 함