공부

속도제어 수식 (1초에 n번)

imitme 2018. 10. 8. 22:00
반응형

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;  //발사 원점



public float fireRate = 0.1f;  //발사간격(0.1초 간격)

private float nextFire = 0.0f;


   void Update () {

      

if (Input.GetMouseButtonDown(0))

       {

           Fire();

       }



if (Input.GetMouseButton(0))

       {

           if(Time.time >= nextFire)

           {

               Fire();

               nextFire = Time.time + fireRate;

           }

       }

       }

}


   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