나는 C # / XNA를 사용하고 있으며 업데이트 코드와 드로우 코드를 섞지 말라고 꽤 많이 들었습니다. 그리고 확실하지 않습니다! 그러나 누구나 '논리 코드'가 정확히 무엇인지 설명해 주시겠습니까?
여기에서 볼 수 있듯이 : http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] 모든 게임 로직을 Update 메소드 (Draw가 아닌!)에 넣으면 모든 것이 일정한 속도로 실행됩니다.
내 게임 속도가 FPS에 비해 변동하기 때문에 이것을 묻습니다. 느린 FPS는 느리게 움직이는 물체와 같으며 그 반대도 마찬가지입니다. 그리고 예, 예상 position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
코드를 포함하고 있습니다.
이것은 아마도 큰 신인 질문이지만, 나는 이것의 정의에 대해 절대적으로 명확하게하고 싶습니다.
gt.ElapsedGameTime.TotalSeconds
프로그램 (게임)을 시작한 후 경과 된 시간 (초) 이라고 생각했습니다 . 여기에 속도를 곱하면 5 초 후에 재생 속도가 5 배 빨라집니다 (속도가 0으로 설정된 특별한 경우 제외). 당신이 무엇을 가질 수 있는지 확실하지 않지만, 나는 흥미 롭습니다.
iii
으로 몇 초 만에 원하지 않기 때문에 모든 업데이트를 수동으로 증가시키는 자체 변수를 사용하기 때문에 몇 초 만에 그런 일이 전혀 필요 하지 않았습니다. 단계 또는 프레임이 필요합니다. 그래도 당신의 길은 소프트 코딩의 유효한 방법이라는 것을 알 수 있습니다.
position = speed * ...TotalSeconds
. 이=
아닙니다+=
. 이 인 경우에+=
사용자가 입력처럼, 당신의 위치는 거의 즉시 화면을 날아 것입니다.