2014-11-03 12 views
8

Unity .getAxis(string name) wydaje się zwracać przesunięcie myśli generowane przez dane wejściowe użytkownika (strzałki, mysz lub nawet joystick). Wartości zwracane są zwykle w przedziale <-1; 1>, z wyjątkiem koła myszy.Jakich parametrów mogę użyć w Unity Input.getAxis?

Z różnych próbek kodu widzę wiele sposobów na uzyskanie danych wejściowych, ale wydaje się, że nie ma rzeczywistej listy nazw/danych wejściowych. W moim przypadku chcę włączyć powiększanie za pomocą koła lub PgUp i PgDn. Kod koła wygląda następująco:

movement.y -= ResourceManager.ScrollSpeed * Input.GetAxis("Mouse ScrollWheel"); 

Ale co ze stroną w dół i stroną w górę? I ogólnie, skąd mogę wiedzieć, które nazwy użyć w tej metodzie?

Odpowiedz

9

Input.GetAxis i Input.GetButton (jak również GetButtonDown i GetButtonUp) tylko zwrócić stan jednego wirtualnego osi wejściowych określonych w Input manager.

Wartości zwracane nie muszą być w zakresie [-1, 1]. Większość wirtualnych osi reprezentujących wartość bezwzględną reprezentowana jest przez wartości między -1 a 1. Istnieją jednak osie, które zwracają ruch względny, podobnie jak predefiniowane "MouseWheel", "Mouse X" i "Mouse Y". Zwracają wartość, którą oś przesunęła od ostatniej klatki.

The MouseWheel ma kilka dodatkowych "problemów". Wartość delta pochodzi z systemu operacyjnego. Jeśli użytkownik ustawił kółko przewijania, aby przesunąć o 3 wiersze na "jednostkę przewijania", otrzyma wartości wielokrotności równej 3. Jeśli uda się zakręcić kółkiem wystarczająco szybko, można uzyskać wartości większe niż 3 lub mniejsze niż -3.

Brak domyślnych osi dla PageUp lub PageDown, ale możesz je dodać, jeśli chcesz. Ale uważaj, GetAxis zwróci stan wirtualnej osi. Więc gdy przytrzymasz przycisk dodatni, otrzymasz "1" tak długo, jak przytrzymasz przycisk. Jeśli chcesz posłuchać wydarzeń, musisz użyć GetButtonDown/GetButtonUp.

Jeśli jednak chcesz sprawdzić określony klucz, zwykle łatwiej jest użyć GetKeyDown/GetKeyUp, która zajmuje KeyCode.

Coś jak:

if(Input.GetKeyDown(KeyCode.PageUp)) 
    movement.y -= 1; 
if(Input.GetKeyDown(KeyCode.PageDown)) 
    movement.y += 1; 

edit
Jeśli chcesz dowiedzieć się powszechnie dostępne nazwy klawiszy, spojrzeć na strony Conventional Game Input. U dołu znajduje się lista najpopularniejszych nazw, w tym "strona w górę" i "strona w dół". Menedżer wejściowy zazwyczaj odmawia podania niewłaściwych nazw klawiszy. Więc jeśli wpiszesz jeden, nie skupisz się na polu wprowadzania, a wartość pozostanie, to się zgadza.

Po ustawieniu przycisku dodatniego za każdym naciśnięciem przycisku oś wirtualna "powoli" zwiększy się z 0 na 1 w zależności od ustawienia "czułości". Czułość jest jak współczynnik przyspieszenia. Zwolnienie przycisku spowoduje powrót "powoli" do zera w zależności od wartości "grawitacji", która jest czynnikiem opóźnienia.

Po ustawieniu przycisku dodatniego i ujemnego oś może przejść w obie strony do 1 po naciśnięciu przycisku dodatniego i do -1 po naciśnięciu przycisku ujemnego. Jeśli "snap" jest prawdziwe, to natychmiast powróciłoby do 0, jeśli naciśniesz przeciwny przycisk zamiast powolnego powrotu do 0, a następnie zaczniesz rosnąć w przeciwnym kierunku.

Wartość "martwa" definiuje martwą strefę. Jeśli wartość osi jest mniejsza niż martwa (lub większa niż -dead), będzie ona traktowana jako 0. Jest to ważne dla rzeczywistych analogowych urządzeń wejściowych, które zwykle mają trochę drgań wokół pozycji spoczynkowej.

Pozostałe właściwości, takie jak "invert", "Type", a więc jedno powinno być jasne podczas czytania dokumentacji.

Możliwe jest zdefiniowanie dwóch osi o tej samej nazwie, takich jak osie defibrylacyjne "Poziome" i "Pionowe". Osie o tej samej nazwie są traktowane jako jeden.

Myślę, że powinno to dotyczyć większości zadań związanych z Input Managerem.

+0

Nie, naprawdę chcę, żeby Unity liczyła dla mnie oś, więc czas, kiedy przycisk był wyłączony, jest proporcjonalny do powiększenia. –

+0

Och, proszę, czy mógłbyś opracować, jak zdefiniować nową oś za pomocą nazwy przycisku? Nie mogę wiedzieć, co wpisać w "Przycisk dodatni/ujemny". –

+0

@ TomášZato: Dodałem trochę więcej informacji o ustawieniach InputManager. – Bunny83

Powiązane problemy