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;
}
총알키를 누르고 있으면 미사일이 뿅뿅뿅 나가고,
잠시 텀을 두었다가 뿅뿅뿅 나가는 식입니다.
오잉 BulletReload는 언제 쓰이는건가요!!
답글
안상현(북서니)
2022.07.02미사일 세발이 나간 후 1초간 텀을 뒀는데 그 용도로 써봤습니다!
아아 invoke로 두셨군요!!
응용력 대박이네요👍🏻
gauge라는 변수를 두고 space가 눌린 상태에서 gauge변수 값을 높이고 특정 값이 되면 발사되는 로직도 괜찮을것 같아요!!
멋지십니당 👍🏻👍🏻
답글
안상현(북서니)
2022.07.02감사합니다. 계속 열심히 배워볼게요 ㅎㅎ