inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)

1.17 플레이어 구현하기 - 마무리

뿅뿅뿅! 뿅뿅뿅! 느낌을 구현해 보았습니다.

293

안상현(북서니)
0

    void Start()
    {

    }


    public float speed = 0.01f;

    public int bulletspeed = 600;
    public int bulletspeed2 = 800;
    //총알속도를 제어.

    //퍼블릭을 통해 BulletPrefab이라는 변수를 유니티내에서 쓸 수 있게 만든다.
    public GameObject BulletPrefab;
    bool Shoot = true;

    void Update()
    {
        //주인공의 행동을 제어하는 키
        if (Input.GetKey(KeyCode.A))
        {
            transform.Translate(-speed,0,0);
        }

        if (Input.GetKey(KeyCode.D))
        {
            transform.Translate(speed,0,0);
        }

        if (Input.GetKey(KeyCode.W))
        {
            transform.Translate(0,speed,0);
        }

        if (Input.GetKey(KeyCode.S))
        {
            transform.Translate(0,-speed,0);
        }


        // 미사일 발사를 제어하는 키
        if (Input.GetKey(KeyCode.Space) && Shoot == true)
        {
            Shoot = false;
            //미사일 발사 텀.
            Invoke("BulletReroad" , 1);
            // 연속발사를 위해 for문을 작성했다.
            for (int i = 0 ; i < 3 ; i++)
            {
                Invoke("Bulletshoot" , i * 0.1f);
            }

        }

    }

    void Bulletshoot()
    {
        // bullet 변수를 만든 후 생성된 총알을 해당 변수에 대입시킨다.
        GameObject bullet =  Instantiate(BulletPrefab);

        //총알의 포지션 = 플레이어의 포지션
        // 우측이 플레이어의 포지션이 되는 이유는, 지금 이 코드가 플레이어에게 적용되어 있기 떄문이다.
        bullet.transform.position = transform.position;

        //Rigidbody2D를 제어할 수 있도록 GetComponent를 사용한다.
        //Rigidbody내의 Addforce메서드로 접근해 벡터값을 up으로 변경하자.
        //위에서 선언한 bulletspeed(100)을 곱해준다.
        bullet.GetComponent<Rigidbody2D>().AddForce(Vector2.up * bulletspeed);
    }
   
    // 총알 나가는 텀을 위해 함수 하나 생성.
    void BulletReroad()
    {
        Shoot = true;
    }
 
총알키를 누르고 있으면 미사일이 뿅뿅뿅 나가고,
잠시 텀을 두었다가 뿅뿅뿅 나가는 식입니다.
 
 

답변 2

0

백현우

오잉 BulletReload는 언제 쓰이는건가요!!

0

안상현(북서니)

미사일 세발이 나간 후 1초간 텀을 뒀는데 그 용도로 써봤습니다!

0

백현우

아아 invoke로 두셨군요!! 

응용력 대박이네요👍🏻

gauge라는 변수를 두고 space가 눌린 상태에서 gauge변수 값을 높이고 특정 값이 되면 발사되는 로직도 괜찮을것 같아요!!

멋지십니당 👍🏻👍🏻

0

안상현(북서니)

감사합니다. 계속 열심히 배워볼게요 ㅎㅎ