वर्तमान में दिए गए दृष्टिकोणों में से किसी एक के साथ मेरी चिंता यह है कि वे दोनों 'वैरिएबल-स्पीड' को नष्ट कर देंगे, जो न केवल खिलाड़ियों के लिए विचलित करने वाला हो सकता है, बल्कि यह भी पता लगाने में मुश्किल कर सकता है कि गायब होने से पहले कितनी देर तक कोई वस्तु बची है । इसके बजाय, अपने मानकों में कहीं (चाहे वे रेंडरर के लिए या पर एक प्रति-वस्तु के आधार वैश्विक हो) मैं चार स्थिरांक होगा: slowBlinkTime
, slowBlinkRate
, fastBlinkTime
और fastBlinkRate
। रेंडर करते समय, यदि आपके ऑब्जेक्ट का शेष जीवन इससे कम है fastBlinkTime
, तो इसे ब्लिंक करें fastBlinkRate
; अन्यथा अगर यह इससे कम है slowBlinkTime
, तो इसे ब्लिंक करें slowBlinkRate
। यदि आप एक कदम और आगे जाना चाहते हैं, तो आपके पास विशिष्ट blinkTime
एस और की एक सरणी हो सकती हैblinkRate
एस और उन्हें एक-एक करके जांचें, लेकिन व्यवहार में यह अधिक होने की संभावना है और बस 'चेतावनी' और 'महत्वपूर्ण' राज्य होने चाहिए। कोड कुछ इस तरह दिखेगा:
float blinkCycle;
if ( entity.timeLeft < fastBlinkTime ) {
blinkCycle = entity.timeLeft/fastBlinkRate;
} else if ( entity.timeLeft < slowBlinkTime ) {
blinkCycle = entity.timeLeft/slowBlinkRate;
}
blinkCycle = blinkCycle - floor(blinkCycle); // find blinkCycle 'mod 1'
if ( (entity.timeLeft < slowBlinkTime) && (blinkCycle < 0.5f) ) {
renderBlinked(entity); // this should be the 'blinked' state, whether flashed or missing
} else {
renderNormal(entity); // the normal render for the entity
}
ध्यान दें कि यह कोड आधा-आधा, आधा-पलक झपकने का चक्र निर्धारित करता है (जो कि 0.5f
परीक्षण में यही दर्शाता है), लेकिन आसानी से दो-तिहाई की तरह कुछ के लिए ट्वीक किया जा सकता है, बस एक-तिहाई बंद करके उचित स्थिरांक। यह भी तेज और धीमी अवस्थाओं के बीच पलक झपकाने के लिए कुछ भी नहीं करता है, लेकिन यह पॉलिश करने के लिए अपेक्षाकृत सरल है।
यह प्लग इन करने के लिए सीधा होना चाहिए, और इससे IMHO को काफी फायदा होगा कि खिलाड़ी 'स्लो' से स्विच को 'फास्ट' ब्लिंकिंग में देख पाएंगे और यह जान पाएंगे कि उनके पास कितना समय बचा है। मैं पैरामीटर मानों के साथ शुरू करूँगा जैसे 5s के लिए slowBlinkTime
और 0.5s के लिए slowBlinkRate
, और 2s / 0.25s के लिए fastBlinkTime
और fastBlinkRate
, लेकिन यह निश्चित रूप से किसी विशेष गेम पर निर्भर है।