본문 바로가기

Unity/Unity2D_Shooting

Unity2D_Shooting - 적기체 spawn위치 추가 , 기존 프리팹 수정하여 새로운 프리팹생성, 적기체 총알발사 플레이어방향으로 총알발사

1. 적기체 스폰위치 추가

 (1) - 적기체 스폰위치가 담겨있는 배열의 사이즈를 4개 늘리고 좌측 2개 우측2개 총 4개(spawnPos6 ~ 9)의 오브젝트

        를 생성하고 위치정보를 담은 배열에 추가로 드래그 앤 드랍 해준다

 

 

(2) - 추가된 위치에서 기체가 생성되며 대각선방향으로 날아오도록 코드를 구현한다

   *Random.Range(0,9)를 변수에 담으면 int 0 부터 8을 반환한다

   *instantiate로 생성된 프리팹을 변수에 담으면 생성된 GameObject가 반환된다 

   *transform.rotation = Quaternion.Euler(x축 rotation각도, y축 rotation각도, z축 rotation각도)는 해당오브젝트를

     회전 시켜준다

 

 

2.플레이어 총알 프리팹을 복사해서 적기체 총알 프리팹으로 수정하기

(1) - BulletB 프리팹을 Ctrl+D 로 복사하고 복사한 BulletB1프리팹의 속성에서 Open Prefab을 열어준다

 

 

(2) - 이 후 이름과 스프라이트등을 바꿔주고 변경한 후 상단에 Senes를 클릭하면 저장되며 새로운 프리팹으로 생성되          고 원래 Senes으로 돌아온다

    - 그리고 tag명을 Enemy_Bullet으로 바꿔준다(안바꿔 주면 적기체가 총알을 생성하자마자 지가 맞고 사라짐)

    - Is Trigger도 체크해준다 

 

 

3.적기체가 플레이어에게 총알 쏘기

 (1) - GameManiger스크립트 구현

       *프리팹에 public GameObject gameobject; 를 선언한다고해서 아직 계층구조창에 존재하지 않고 Assets폴더에

        존재하는 프리팹의 비어있는 gamobject 속성에 계층구조창에 존재하는 오브젝트를 드래그앤 드랍할 수 없다 

       (단!, 프리팹의 public으로 비어있는 공간에 프리팹을 드래그 앤 드랍할 수는 있다! 즉, 적기체 프리팹에

        총알 프리팹을 넣는것은 가능한다)

        *따라서 적기체 프리팹스크립트에 플레이어의 오브젝트 정보를 가져오려면 게임매니져스크립트에서 적기체

         오브젝트를 생성할때 계층구조에 생성된 적기체오브젝트로 플레이어 오브젝트 정보를 보내줘야한다

GamManiger스크립트에서 public한 PlayerObj를 채워준다

 

 

(2) - Enemy 스크립트 구현 

   *플레이어 방향을가르키는 벡터를 꼭 Vector3에 담아서 변수화 하여 사용해준다(직접 대입하면 방향정보가 제대로 읽히지 않는듯 하다..)

 

- public된 Enemy_bulletA와 B 그리고 Delay를 채워준다(Delay값을 안채줘주면 기체자체가 나오자마자 사라짐..)

 

(3) - 적기체 프리팹에 public으로 enemyName을 지정해주고 기체마다 다른 총알이 나가도록 Enemy스크립트 구현