Unity3D Transform의 이유Translate의 x/y/z 값은 항상 speed* Time을 통과합니다.deltaTime 가져오기그래야지.
1813 단어 unity3d
public class Player : MonoBehaviour {
protected Transform m_transform;
public float m_speed = 1;
// Use this for initialization
void Start () {
m_transform = this.transform;
}
// Update is called once per frame
void Update () {
float movev = 0;
float moveh = 0;
if (Input.GetKey (KeyCode.UpArrow)) {
movev -= m_speed * Time.deltaTime;
}
if (Input.GetKey (KeyCode.DownArrow)) {
movev += m_speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow)) {
moveh += m_speed * Time.deltaTime;
}
if (Input.GetKey (KeyCode.RightArrow)) {
moveh -= m_speed * Time.deltaTime;
}
m_transform.Translate (new Vector3 (moveh, 0, movev));
}
}
위 수평 방향(x축)의 변위량 moveh 통과 mspeed * Time.deltaTime 방식으로 가져옵니다.
제가 아까 배웠을 때 속도가 빠른지 궁금했어요. 직접moveh+=mspeed는 끝이 아니야, 곱하는 시간.델타타임이 뭐야...(지금 생각해보면 유치하다. 답은 정말 간단하기 때문이다/(예를 들어 o예)/~~)
오늘 문득 크게 깨닫고 다음과 같이 설명한다.
예를 들어 정의된 mspeed = 1, 캐릭터 속도가 1m/초라는 뜻,
그렇다면 moveh + = mspeed, 1초를 지나 수평 방향으로 1m를 이동한 것을 기본으로 한다.
이때 이 함수는 얼마나 자주 한 번 호출됩니까?답은: 1초가 아니라 1프레임,
그러면 한 프레임은 얼마나 됩니까?몇 십 밀리초만 하자. 정확한 시간은 바로 Time이다.deltaTime (Update 또는 FixedUpdate를 마지막으로 호출하는 데 걸린 시간을 표시합니다.)그러니까 m 로.speed * Time.deltaTime, 이렇게 제때에 밀리초 동안 이동해야 하는 거리입니다.
마지막으로 분석해 봐, 왜 이렇게 써?
내가 이전에 Winform에 있는 GDI를 그린 경험으로 예를 들어 내가 텍스트 스크롤을 하려고 한다면, 나는 OnPainting에서 매번 N개의 픽셀을 이동하는 방법으로 처리할 것이다.
ActionScript에서도 OnFrame에서 매번 N개의 픽셀을 이동하여 처리합니다.
즉, 프레임의 속박에서 벗어나지 않고 프레임의 속도가 바뀌면 속도가 바뀐다는 것이다.
그러면 이런 방법은 다르다. 왜냐하면 나는 프레임을 고려할 필요가 없기 때문이다. 나는 이 프레임과 위 프레임의 간격이 얼마나 되는지만 관심을 가진 다음에 얼마나 거리를 이동해야 하는지 알 수 있다. 설령 그의 프레임 속도가 변한다고 해도 내가 정한 N미터/초의 속도에 영향을 주지 않는다(물론 프레임 속도가 너무 작으면 화면이 원활하지 않을 것이다).
마지막으로 내가 방금 본 해석 타임을 동봉합니다.deltaTime 기사 링크(참조)http://blog.csdn.net/xgx198831/article/details/7411504)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity용 VLC 소개 - Android 에디션숙련된 Unity 개발자는 유명한 Big Buck Bunny 비디오를 재생하는 VLC 플러그인을 보여주기 위해 편집된 유명한 Unity 장면 을 인식할 것입니다. 이 Unity 플러그인을 사용하면 Unity 기반 A...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.