본문 바로가기

기타/패스트캠퍼스 Unity

유니티 입문 패스트캠퍼스 챌린지 18일차

플레이어에 총알을 지정하고 발사하기

 

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

 

C#과 유니티로 배우는 게임 개발 올인원 패키지 Online. | 패스트캠퍼스

현직 게임업계 게임 개발자 직강 C# 프로그래밍부터 게임 물리와 수학까지 모두 정복!

fastcampus.co.kr

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.