Ş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
, fastBlinkTime
ve fastBlinkRate
. Oluştururken, nesnenizin kalan ömrü daha azsa fastBlinkTime
, öğeyi yanıp söner fastBlinkRate
; aksi halde küçükse slowBlinkTime
yanıp söner slowBlinkRate
. Bir adım daha ileri gitmek isterseniz, farklı blinkTime
s veblinkRate
ve 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.5f
testte 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 slowBlinkTime
ve 0.5s for slowBlinkRate
ve 2s / 0.25s için parametre değerleriyle başlayacağım fastBlinkTime
ve fastBlinkRate
bu kesinlikle sizin oyununuza bağlı.