ฉันใช้ C # / XNA และได้รับการบอกกล่าวสองสามครั้งเพื่อไม่ให้มิกซ์โค้ดอัปเดตกับรหัสการจับ - และฉันมั่นใจว่าฉันไม่ได้! แต่ใครก็ได้โปรดอธิบายว่า 'รหัสตรรกะ' คืออะไรกันแน่?
เท่าที่เห็นที่นี่: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[... ] ตรวจสอบให้แน่ใจว่าคุณได้วางตรรกะของเกมทั้งหมดไว้ในวิธีการอัพเดท (ไม่ใช่ใน Draw!) และทุกอย่างจะทำงานด้วยความเร็วคงที่ดี
ฉันถามสิ่งนี้เนื่องจากความเร็วของเกมของฉันผันผวนเมื่อเทียบกับ FPS FPS ช้าเท่ากับวัตถุที่เคลื่อนไหวช้าและวีซ่าในทางกลับกัน และใช่ฉันรวมposition += speed * (float)gt.ElapsedGameTime.TotalSeconds;
รหัสที่คาดไว้
นี่อาจเป็นคำถามมือใหม่ แต่ฉันต้องการให้ชัดเจนกับคำจำกัดความของเรื่องนี้
gt.ElapsedGameTime.TotalSeconds
จำนวนวินาทีที่ผ่านไปจากการเริ่มต้นโปรแกรม (เกม) หากคุณคูณความเร็วของคุณด้วยหลังจากนั้น 5 วินาทีในการเล่นความเร็วของคุณจะเร็วขึ้น 5 เท่า (ยกเว้นกรณีพิเศษที่ตั้งค่าความเร็วเป็น 0) ไม่แน่ใจว่าคุณมีสิ่งใดที่จะทำให้เรื่องนั้นเป็นจริง แต่ฉันก็รู้สึกทึ่ง
iii
ว่าฉันเพิ่มการอัพเดททุกครั้งด้วยตนเองเพราะฉันไม่ต้องการภายในไม่กี่วินาทีฉันต้องการขั้นตอนหรือเฟรม ฉันจะเห็นว่าวิธีการของคุณเป็นวิธีที่ถูกต้องของสิ่งที่อ่อนนุ่มการเข้ารหัส
position = speed * ...TotalSeconds
ฉันคิดว่าคุณหมายถึง แจ้งให้ทราบก็ไม่ได้=
+=
หากเป็น+=
เช่นเดียวกับที่คุณพิมพ์แล้วตำแหน่งของคุณจะบินออกจากหน้าจอเกือบจะทันที