2014년 5월 15일 목요일

unity3d script : 적절한 Input작업 방법

메뉴의 edit>project setting>time에 Fixed Timestep값을 조정하면
FixedUpdate함수가 불리는 주기를 설정합니다.
기본이 0.02로 셋팅되어 있고 이는 50fps로 호출됨을 의미합니다.

Update함수는 구동되는 기기에 dependent하기에 framerate가 달라질 수 있습니다.
이는 physics처리에 적절하지 않습니다.
rigidbody를 움직이고자 할 경우 반드시 FixedUpdate함수에서 처리 하도록 합니다.

FixedUpdate함수는 설정된 값으로 주기마다 실행되어 기기의 영향을 받지 않습니다.
단, 반드시 호출된다는 의미는 성능에 따라 한번에 여러번 호출될 수 있다는 의미를 가지고 있기도 합니다.
* LateUpdate는 Update함수이후에 호출됩니다. 



*** Input입력은 Update에서
physics처리는 FixedUpdate 에서!!


FixedUpdate함수에서 Input처리를 수행하고자 할 경우
아래 예시와 같이 case1 방법 보다는 case2방법을 추천함.


case1
——————————————————————————————————————
using UnityEngine;
public class Test:MonoBehaviour{
    void FixedUpdate(){
        if(Input.GetKeyDown(KeyCode.Space)){
           //Action
        }
    }
}
——————————————————————————————————————


case2
——————————————————————————————————————
using UnityEngine;
public class Test:MonoBehaviour{
    bool action = false;
    void Update(){
         if(Input.GetKeyDown(KeyCode.Space)){
             action = true;
         }
    }
    void FixedUpdate(){
       if(action){
           //Action
           action = false;
        }
    }
}
——————————————————————————————————————

댓글 없음:

댓글 쓰기