Bir GUI'de, düğmeye basıldığında veya bırakıldığında giriş işlenmeli mi?


12

Oyunumuzun menü sisteminde (seviyelerin, seçeneklerin vb. Seçilmesi), oyuncu sonraki ekrana gitmek için gamepad üzerindeki a düğmesine basar. Herhangi bir işlem yapmadan önce (yani bir sonraki ekranı görüntülemeden) menü sistemini düğmeyi bırakana kadar bekleyecek şekilde kodladım. Bazı yeni çalma testi geri bildirimleri, bunun tersini yapmamızı önerdi: düğmeye basıldığında harekete geçin. Merak ediyorum, bunun standart olarak ele alınışı nedir ve hatta bir fark yaratıyor mu?

Yanıtlar:


32

Kontrol girişlerinin GUI odağını doğrudan bir GUI düğmesinden diğerine değiştirdiği bir gamepad tarafından kontrol edilen bir oyunda, bir kontrolör düğmesine basıldığında bu GUI düğmelerinin etkinleştirilmesi gerekir .

Bir fare tarafından kontrol edilen bir oyunda (veya sanal bir fare imlecini ekranın etrafında hareket ettirmek için bir gamepad kullanılıyorsa), fare / denetleyici düğmesi, üzerinde bulunduğu düğmenin üzerinde bırakıldığında ekran düğmelerinin etkinleştirilmesi gerekir. basıldı . (Baskı bir GUI düğmesinin üzerinde gerçekleştiyse ve fare daha sonra başka bir GUI düğmesinin üzerinde hareket ettirildiyse ve serbest bırakılmazsa, her iki GUI düğmesi de etkinleştirilmez)

Bunun nedeni, insanların fare kontrol becerilerinin oldukça değişkendir ve çoğu zaman insanlar imleci tam olarak istedikleri yerde konumlandırmada veya şu anda hangi GUI düğmesinin üzerinde gezindiklerini tam olarak söylemekte biraz sorun yaşarlar. Teori, insanların GUI düğmesini vurgulamak için fare düğmesini basılı tutabilmesidir ve bu GUI düğmesi kullanmayı amaçlayan düğme değilse, fare düğmesini serbest bırakmadan önce imlecini ondan uzaklaştırabilirler. bastırmamak için.

Ancak oyununuz bir gamepad tarafından kontrol ediliyorsa, gamepad düğmesine basıldığında değil, serbest bırakıldığında değil, kesinlikle harekete geçmek istersiniz.

Beş yıl sonra düzenleyin:

Bu cevabın yayınlanmasından bu yana, gamepadler tarafından kontrol edilen fare tarzı imleçleri işlemek için yeni bir standart ortaya çıkmaya başladı.

Yukarıdaki cevapta, bunların aslında fareler tarafından kontrol edilen imleçler gibi çalışmak için uygulanması gerektiğini önerdim; imleç aynı GUI öğesinin üzerindeyse, fareyle üzerine gelindiğinde vurgulayın, fareyle üzerine gelindiğinde etkinleştirin.

Ancak şimdi, gamepad kontrollü imleçler, gamepad düğmesi bir süre basılı tutulduktan sonra tipik olarak bir GUI eylemini etkinleştirir(tipik olarak yaklaşık bir saniye). Bu sistemi takip edecekseniz, aktivasyonun ne kadar süreyle gerçekleşeceğini gösteren bir ekran göstergesine sahip olmanız gerekir (genellikle bu, imlecin etrafında küçük bir zil sesidir; üzerine gelin) ve düğmenin basılı tutulduğu sırada etkinleştirilecek öğeyi vurgulamanız gerekir (ve fare her zaman bir öğenin üzerinde olduğunda bunu yapmak iyi bir fikir olabilir) düğme tutulmuyorsa). Düğme basılı tutulurken, imleç son anda sıkıştırılırsa GUI öğelerinin yanlışlıkla etkinleştirilmesini önlemek için imleç hareket ettirilememelidir.

Bu sistemin yararı, fare stili imleci yanlış noktanın üzerinde olan bir kullanıcının, düğmeyi erken bırakarak o öğeyi etkinleştirmekten kaçınmasına izin vermesidir; fare tarzı "serbest bırakmadan önce ondan uzaklaş" bir gamepad üzerinde başarmak için fareye göre daha az doğaldır ve bu yaklaşım bir gamepad kullanıcısının istenmeyen bir tıklamayı çok daha kolay iptal etmesini sağlar.

Hatta imleç gerçek bir fare tarafından hareket ettirilse bile bu imleç etkileşim modelini deneyen birkaç oyun görmeye başlıyoruz. Hiçbir insanın gökyüzü bunu örnek olarak yapmaz. Fare imleci etkileşimini ele almaya yönelik bu yaklaşımın önümüzdeki yıllarda giderek yaygınlaşıp beklenmeyeceğini görmek ilginç olacaktır.


10
+1. Eylem, fare aşağı değil farenin serbest bırakılmasıyla gerçekleştirilmelidir. Bununla birlikte, bunun etkili olması için GUI öğesinin kendisinin fare aşağı olayında görsel durumu değiştirmesi önemlidir.
Kylotan

Soruyu alakalı tutmak için 5 yıl sonra tekrar güncellemek üzere +1.
lozzajp

Birisi eski yanıtlarımdan biri hakkında yorum yaptığında veya yorum yaptığında her zaman güncel olduğundan emin olmak için tekrar okurum. :)
Trevor Powell

1

Tuşa basar basmaz harekete geçirdim.

Anahtarın serbest bırakılmasından sonra eylemin gerçekleştiği en iyi örnek Starcraft: Broodwar idi. Tuşlara çok hızlı bir şekilde bastığımda, bir öncekini tamamen bırakmadan önce bir sonraki tuşa basardım, bu da bazı komutların göz ardı edilmesine yol açtı. (1A Tıklama, 2A Tıklama, 3A Tıklama - 2 yok sayılır)

Bu Warcraft III'te değişti ve sonuç olarak oyun bana çok daha duyarlı geldi ve Broodwar'dan 'yapışkan kontrol grubu' sorunları yaşamadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.