Şu anda sunulan yaklaşımlardan herhangi biriyle ilgili endişem, her ikisinin de 'değişken hızlı' yanıp sönmesine yol açmasıdır, bu da sadece oyuncular için rahatsız edici olmakla kalmaz, aynı zamanda bir nesnenin kaybolmadan önce ne kadar süre kaldığını da ölçmeyi zorlaştırır . Bunun yerine, parametrelerde bir yere (bir nesne başına esasına gerçekleyicisi veya küresel olsun) Dört sabitleri olurdu: slowBlinkTime, slowBlinkRate, fastBlinkTimeve fastBlinkRate. Oluştururken, nesnenizin kalan ömrü daha azsa fastBlinkTime, öğeyi yanıp söner fastBlinkRate; aksi halde küçükse slowBlinkTimeyanıp söner slowBlinkRate. Bir adım daha ileri gitmek isterseniz, farklı blinkTimes veblinkRateve bunları tek tek kontrol edin, ancak pratikte aşırıya kaçması ve sadece 'uyarı' ve 'kritik' durumlara sahip olması yeterlidir. Kod şöyle görünecektir:
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
}
Bu kodun yarı açık, yarı kapalı yanıp sönme döngüsüne sahip olduğunu ( 0.5ftestte gösterilenin bu olduğunu), ancak uygun sabiti ayarlayarak üçte iki açık, üçte bir kapalı gibi bir şey için kolayca ayarlanabileceğini unutmayın. Bu aynı zamanda hızlı ve yavaş durumlar arasında yanıp sönmeyi 'senkronize etmek' için hiçbir şey yapmaz, ancak cilalamak nispeten kolaydır.
Bu takmak kolay olmalı ve IMHO'nun oyuncuların `` yavaş '' dan 'hızlı' yanıp sönmeye geçişini görebilecekleri ve tam olarak ne kadar süre kaldıklarını bildikleri önemli bir avantaja sahip olacak. Ben 5s for slowBlinkTimeve 0.5s for slowBlinkRateve 2s / 0.25s için parametre değerleriyle başlayacağım fastBlinkTimeve fastBlinkRatebu kesinlikle sizin oyununuza bağlı.