2017-11-27 1 views
0

Unity의 Input.acceleration 명령에 관한 질문이 있습니다. Vector3 1보다 더 많은 경우Unity Accelerometer Documentation

public class ExampleClass : MonoBehaviour { 
    public float speed = 10.0F; 
    void Update() { 
     Vector3 dir = Vector3.zero; 
     dir.x = -Input.acceleration.y; 
     dir.z = Input.acceleration.x; 
     if (dir.sqrMagnitude > 1) 
      dir.Normalize(); 

     dir *= Time.deltaTime; 
     transform.Translate(dir * speed); 
    } 
} 

왜 확인 않습니다 다음과 같이

는 공식 문서에 따르면 기본 코드는? (dir.sqrMagnitude)를 설정 한 다음 1로 설정하십시오. 최적화 용입니까?

또한 deltatime을 곱한 목적은 무엇입니까?

감사합니다 :)

답변

0

그들은 일반적으로 당신은 빨리 당신이 한 방향으로 할 수와 같은 것 하나에 1로 -1 사이의 축으로 이동할 수 있습니다 1. 방향의 증가를 잠그는 -1은 해당 축에서 반대 방향으로 가능한 한 빠릅니다.

프레임 속도가 일정하지 않더라도 두 번째 질문 곱하기 시간 델타 시간은 일정한 이동 속도를 제공합니다. 그것은 당신의 움직임을 더욱 일관되게 만듭니다.

그래서 무엇이든 화면을 빠르게 움직이게하려면 속도를 올리십시오.이 속도는 Unity 디자인 타임의 속성에서 공개적으로 사용할 수 있어야합니다. 20 속도는 10 속도보다 훨씬 빨라야합니다.

그래서 그들이 이것을하는 이유는 가속도가 .5라고 가정하면 프레임에서 움직임의 1/2을 얻을 수 있습니다. 하지만 1에서 전체 델타 * 10을 얻을 수 있습니다.