플레이어에 총알을 지정하고 발사하기
Player 클래스에 총알 변수 추가하기
- Player 프리팹에 총알 발사 위치 추가
- Player 클래스를 수정하여 발사 위치 및 총알 링크
- 총알 발사 속도를 조절하도록 변수 추가
Player 총알 Preafab을 발사하기
Player 클래스에 발사 메소드 작성
- Player 클래스에 발사 메소드 작성
- Instantiate로 복제
- GetComponent<Bullet>()로 Bullet 클래스 확보
- Bullet.Fire로 발사
지난시간에 만들었던 Bullet은 씬에서 삭제를 한다. (prefab으로 만들어 두었기때문에)
Player.cs 스크립트를 편집한다.
[SerializeField]
Transform FireTransform;
[SerializeField]
GameObject Bullet;
[SerializeField]
float BulletSpeed = 1;
public void Fire()
{
GameObject go = Instantiate(Bullet);
Bullet bullet = go.GetComponent<Bullet>();
bullet.Fire(OwnerSide.Player, FireTransform.position, FireTransform.right, BulletSpeed);
}
유니티 편집기에서 플레이어 프리팹을 프리팹 편집모드로 열고 EmptyObject를 추가하고 FirePoint로 이름을 수정한다.
총알 발사 시작지점을 지정하는과정이다.
Player 스크립트에 만들었던 Fire Transform을 유니티 인스펙터에서 드래그해서 FirePoint Object로 지정한다.
유니티 인스펙터에 Bullet부분에는 우리가 전에 만들었던 Bullet Prefab을 드래그로 넣는다.
총알을 발사하기
InputController를 수정하여 Player의 총알을 발사
- Input.GetMouseButtonDown을 이용하여 마우스 감지
- SystemManager를 통해 Player.Fire() 호출
예전에 만들었던 InputController.cs 스크립트를 다시 수정한다.
void Update()
{
UpdateInput();
UpdateMouse();
}
void UpdateMouse()
{
if(Input.GetMouseButtonDown(0))
{
SystemManager.Instance.Hero.Fire();
}
}
테스트를 해보니 총알 속도가 너무 느리다, Bullet Speed를 10으로 변경한다.
https://fastcampus.co.kr/dev_online_game
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.