मैं C # / XNA का उपयोग कर रहा हूं और ड्रॉ कोड के साथ अपडेट कोड को नहीं करने के लिए काफी बार कहा गया है - और मुझे यकीन है कि मैं नहीं हूं! लेकिन क्या कोई यह बता सकता है कि वास्तव में 'लॉजिक कोड' क्या है?
जैसा कि यहाँ देखा गया है: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] सुनिश्चित करें कि आपने अपने सभी गेम लॉजिक को अपडेट विधि के अंदर रखा है (ड्रा में नहीं!) और सब कुछ एक स्थिर गति से चलेगा।
मैं यह पूछ रहा हूं क्योंकि मेरे खेल की गति एफपीएस के सापेक्ष उतार-चढ़ाव है। स्लो एफपीएस धीमी गति से चलने वाली वस्तुओं और वीज़ा वर्सा के बराबर है। और हां, मैं अपेक्षित position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
कोड सहित हूं ।
यह शायद एक बड़ा रूखे सवाल है, लेकिन मैं सिर्फ इस की परिभाषा पर बिल्कुल स्पष्ट होना चाहता हूं।
gt.ElapsedGameTime.TotalSeconds
कि कार्यक्रम (खेल) शुरू करने से कुछ सेकंड की संख्या है। यदि आप अपनी गति को उससे बढ़ा रहे हैं, तो 5 सेकंड खेलने के बाद, आपकी गति 5 गुना तेज होगी (विशेष मामले को छोड़कर जहां गति 0 पर सेट है)। निश्चित नहीं कि आपके पास और क्या हो सकता है जो उस असत्य को बना देगा, लेकिन मैं अंतर्विरोधी हूं।
iii
मैं मैन्युअल रूप से हर अपडेट बढ़ाता हूं, क्योंकि मैं इसे सेकंड में नहीं चाहता हूं, मुझे कदम या फ्रेम चाहिए। मैं देख सकता हूं कि आपका रास्ता नरम-कोडिंग चीजों का एक मान्य तरीका है।
position = speed * ...TotalSeconds
। ध्यान दें यह=
नहीं है+=
। यदि यह+=
आपके टाइप करने के समान था, तो आपकी स्थिति लगभग तुरंत स्क्रीन से उड़ जाएगी।