2017-10-29 54 views
6

Używam kontrolera Wiimote jako urządzenia wejściowego. Używam this wrapper do połączeń HID/pollingu.Unity 3D Sprzęt zewnętrzny ankietowania asynchronicznego w Unity

W scenie demo, która jest dostarczana z tym opakowaniem, odpytywanie kontrolera odbywa się w zdarzeniu Update.

W wielu grach na Wii celowanie w górę iw dół szybko uruchamia akcję. Owijka wskazuje skrajne pionowe stanowisk mających (gdzie celem wykracza poza zakres/jest „poza ekranem”) jako

Y=-1 

próbowałem wykryć takie raptowne ruchy góra-dół przez

1) Detecting if aim is off-screen 
2) If yes, have a look if the aim is within the screen again 
3) Detect if aim is off-screen again and if all this happened in a certain time period 

The Problem jednak jest (myślę, że ze względu na naturę pollingu tylko w przypadku aktualizacji), # 2) niekoniecznie musi wystąpić. Możliwe, że cel był na ekranie, ale kontroler nie został odpytany, kiedy był.

Chciałbym zapytać, co może być poprawnym rozwiązaniem tego problemu.

+0

Czy krok 2 jest w ogóle potrzebny? Co, jeśli po prostu najpierw wykryjesz, czy cel znajduje się ponad górną krawędzią ekranu, a następnie ponownie sprawdzasz, czy cel znajduje się poniżej dolnej krawędzi ekranu w określonym przedziale czasu. Możesz ograniczyć lewe i prawe ograniczenie do szerokości ekranu, jeśli potrzebujesz bardziej zdefiniowanego pola ruchu. – ryeMoss

+0

Czy pytasz o to, ponieważ jest to aktualny problem? Jak powolne jest wydarzenie Update? – Mars

Odpowiedz

2

Twoja ankieta będzie musiała być bardzo zła, bo to jest problem, ale oprócz zwiększania wskaźnika sondowania, nie ma tu niczego, co możesz tutaj zrobić.

Jedyna inna opcja to użycie żyroskopu lub przyspieszeniomierza (przepraszam, nie zadałem sobie trudu, by sprawdzić, czy opakowanie je eksponuje). Zasadniczo możesz połączyć ostre pionowe drgania z punktem, który nie jest wyświetlany na ekranie, ale jeśli twoje odpytywanie jest problemem w oryginalnym rozwiązaniu, prawdopodobnie nadal będzie to problemem.