1초에 10번 나가게 하려면,
조건문 사용할 수 있겠지만, 프레임수가 떨어지면, 발사속도도 같이 떨어진다.
일정속도값을 위해 , Time.을 사용한다.
Time.time이(즉, 현재시점)이 fireRate만큼 지나가지 않으면 if 가 true 되지 않아 실행되지 않는다. if(Time.time >= nextFire) { Fire(); nextFire = Time.time + fireRate; } |
public class FireCtrl : MonoBehaviour {
public GameObject bullet; //오브젝트 정적으로 등록 public Transform firePos; //발사 원점
void Update () {
} } void Fire() { Instantiate(bullet, firePos.position, firePos.rotation); } } |
Time.time
시간에 따라 꾸준히 올라가는 값
public float fireRate = 0.1f;
//발사간격(0.1초 간격) 1초에 10발
0.5이면, 1초에 2발
if (Input.GetMouseButton(0))
마우스 버튼 눌리는 매 프레임 인식
Time.| 시스템 시간관련 가진
Time.time | 계속누적되서 커지는 float 값
Time.time >= nextFire
초기값은 0 이기에 무조건 실행된다.
nextFire = Time.time + fireRate;
다음에 발사되어야 하는 간격을 더한다.?
'공부' 카테고리의 다른 글
유니티_호출 순서 (0) | 2018.10.10 |
---|---|
유니티_Tag와 Layer 사용 개념 (0) | 2018.10.09 |
Import Package 패키지 넣는 법 (0) | 2018.10.04 |
[정리]기획지망안내서 (0) | 2018.09.20 |
검색해 보기 (0) | 2018.09.18 |