구현

  1. 투사체를 생성한다.
  2. 투사체를 움직인다.
  3. 투사체가 계속 남아있지 않게 일정 시간이 지난 뒤 투사체를 없앤다.

투사체 생성

투사체는 게임을 실행하는 도중 생성되어 날아가야 하며, 키 입력에 따라 여러 개가 생길 필요가 있음

프리팹(Prefab) 에셋 타입을 이용

코드

Input.GetKey() 대신 Input.GetKeyDown()d을 사용

키가 눌리는 순간 그 한 번만을 체크하는 메서드이다.

또한 Instantiate() 메서드는 인수로 전달된 프리맵 게임 오브젝트를 게임에 생성해 준다.

→ 인스펙터 창에서 갑을 줘야 Instantiate가 인식을 함

→ 프로젝트 창에 있는 BulletPrefab을 넣어야 함.

 if(Input.GetKeyDown(KeyCode.Space))
      {
          GameObject Bullet = Instantiate(BulletPrefab);
          Bullet.transform.position = transform.position;
          Bullet.GetComponent<Rigidbody2D>().AddForce(Vector2.up * BulletSpeed);
      }

투사체 발사

게임 오브젝트에 속도를 주는 대표적인 방법 → Rigidbody2D 컴포넌트를 추가

오브젝트를 유니티 물리엔진이 제어하게 만드는 컴포넌트

Bullet의 중력을 0으로 하고 속도를 주는 코드 추가

Bullet.GetComponent<Rigidbody2D>().AddForce(Vector2.up * BulletSpeed);

AddForce() 메서드는 Vector를 입력받아 해당 오브젝트에 입력받은 방향과 세기로 힘을 가하는 메서드