Spisu treści:

Kontroler gier Arduino ze światłami reagującymi na twoją grę Unity:: 24 kroki
Kontroler gier Arduino ze światłami reagującymi na twoją grę Unity:: 24 kroki

Wideo: Kontroler gier Arduino ze światłami reagującymi na twoją grę Unity:: 24 kroki

Wideo: Kontroler gier Arduino ze światłami reagującymi na twoją grę Unity:: 24 kroki
Wideo: NAJLEPSZE AMBILIGHT do Twojego Monitora! *WS2812B Ambibox LED Ambient Mode ready set* 2024, Listopad
Anonim
Kontroler gier Arduino ze światłami reagującymi na twoją grę Unity
Kontroler gier Arduino ze światłami reagującymi na twoją grę Unity

Najpierw napisałem to słowem. To pierwszy raz, kiedy używam instructable, więc za każdym razem, gdy mówię: napisz kod tak, aby wiedzieć, że odnoszę się do obrazu na górze tego kroku.

W tym projekcie używam 2 arduino do uruchomienia 2 oddzielnych bitów kodu, ponieważ miałem problemy z uruchomieniem tylko jednego

To są Uno i Leonardo

w sumie to jest to, czego potrzebujesz do tego projektu.

· 7 przycisków

· 23 przewody połączeniowe

· 1 arduino Leonardo + kabel usb

· 4 rezystory· 4 diody led

· 1 arduino uno + kabel usb

· 2 deski do krojenia chleba

Krok 1: Podłączanie przycisków sterujących do Arduino

Podłączanie przycisków sterujących do Arduino
Podłączanie przycisków sterujących do Arduino

Czego będziesz potrzebować, aby podłączyć tę część:

· 7 przycisków

· 14 przewodów połączeniowych

· 1 arduino Leonardo + kabel usb

· deska do krojenia chleba

Przyciski są dość proste do podłączenia, ale mogą szybko stać się bałaganem do wyświetlenia w formie obrazu.

· najpierw umieść przyciski w pozycjach, które zaznaczyłem na obrazku powyżej.

· Po drugie chcesz podłączyć zworkę z gniazda na ziemi arduino Leonardo do ujemnego rzędu płytki stykowej.

· Teraz podłączasz zworki z dowolnego miejsca w rzędzie minus do rzędu, który znajduje się w jednej linii z prawym kołkiem, na którym wciskasz przycisk. to dostarczy mu mocy.

· Następnie chcesz podłączyć przewód połączeniowy z rzędu, który jest w linii z lewym pinem przycisku do cyfrowych gniazd wejściowych Leonardo. Do przycisków tutaj użyłem slotu 2 - 3 - 4 - 5 - 6 - 7 - 8

Pokazałem tylko przewód idący do wejścia 8 na obrazie, ponieważ obraz staje się bardzo niechlujny, aby pokazać wszystkie przewody krzyżujące się ze sobą.

Krok 2: Kodowanie Arduino Leonardo:

Kodowanie Arduino Leonardo
Kodowanie Arduino Leonardo

Więc powiem wam, dlaczego używam do tego Leonardo. To dlatego, że ma pewien układ, którego Uno nie ma, co sprawia, że komputer rozpoznaje go jako urządzenie wejściowe USB. Podobnie jak klawiatura. Co pozwala nam zrobić coś, co znacznie ułatwi nam życie jako programistów tego projektu. Emulacja klawiatury. Oszukamy komputer, aby pomyślał, że naciskamy określone klawisze na klawiaturze, podczas gdy w rzeczywistości naciskamy przyciski na naszym kontrolerze.

Teraz przejdę przez krok po kroku, jak pomyśleliście o kodzie.

Po pierwsze na samej górze dołączamy Keyboard.h. Umożliwi nam to korzystanie z funkcji klawiatury, których będziemy używać w naszym kodzie.

Krok 3:

Obraz
Obraz

Następnie musimy zdefiniować gniazda wejść cyfrowych, których będziemy używać na

Leonardo za każdy guzik.

Każdy z nich nazwałem też według klucza, który zamierzam naśladować.

Krok 4:

Obraz
Obraz

Stamtąd przechodzimy do funkcji konfiguracji. To mówi

arduino co robi przy starcie.

najpierw piszemy Serial.begin, który otworzy port szeregowy i ustawi szybkość transmisji danych na 9600 bps

i definiujemy, że wszystkie są nazwanymi pinami jako wejściami.

Krok 5:

Obraz
Obraz

I na koniec piszemy naszą funkcję pętli, która sprawdzi, czy

przyciski są naciskane i mówią arduino, jak na to zareagować.

Najpierw piszemy Keyboard.begin, który powie arduino, że musi na nas uważać za pomocą funkcji klawiatury

Krok 6:

Obraz
Obraz
Obraz
Obraz
Obraz
Obraz

Następnie dla każdego przycisku piszemy instrukcję if/else, która wygląda tak

Więc to, co powiedziałem arduino, to: Jeśli mój lewy przycisk jest wciśnięty na kontrolerze, komputer pomyśli, że naciskamy klawisz „a”, a jeśli tak nie jest, niech pomyśli, że puściliśmy klawisz.

Zasadniczo powtarzasz ten blok kodu dla każdego przycisku na kontrolerze. ze zmianami dla każdej zmiennej i kluczami, które zmienna musi emulować

Krok 7:

Obraz
Obraz

Klawisze, które kazaliśmy komputerowi uderzyć tutaj, to W – A – S – D, które

są prawie standardem dla ruchu w grach komputerowych i E – Q – oraz spacją, która w tym kodzie jest rozpoznawana jako „”, które są przyciskami, których używam do podnoszenia – odrzuć i odpal w mojej grze. Możesz je zmienić na dowolne klawisze, które według Ciebie działają lepiej dla Twojej gry/kontrolera.

Następnie na koniec mówimy arduino, aby przestał sprawdzać, który Keyboard.end

Krok 8: Kodowanie ruchu w jedności:

Kodowanie ruchu w jedności
Kodowanie ruchu w jedności

Po pierwsze, powiem ci, że robię to do gry 2D, więc

przykłady, które zobaczysz, są do tego stworzone. Głównie oznacza to, że gdzie używam vector2's, jeśli pracujesz w 3D, użyjesz vector3's. ponieważ musiałbyś się martwić o dodatkowy wymiar ruchu w 3D.

Teraz powodem, dla którego użyłem emulacji klawiatury po stronie arduino, jest to, że Unity ma wbudowane coś do rozpoznawania klawiszy na klawiaturze, z których możemy korzystać.

Jeśli otworzysz swój projekt w unity, przejdź do Edycja -> Ustawienia projektu -> Wejście. Możesz zobaczyć w swoim inspektorze, że uruchamia menedżera wprowadzania. Gdzie, jeśli klikniesz Osie, zobaczysz całą masę nazw wejściowych, które są zwykle używane dla kontrolerów PC, takich jak te, które teraz tworzymy. 2 wejścia, których będziemy używać, to poziome i pionowe, które sprawdzają, czy zgadłeś, W-A-S-D.

Najpierw chcesz stworzyć obiekt w hierarchii scen jedności, który będzie twoim graczem. W moim przypadku jest to zabawny mały facet. To może być wszystko, czego potrzebujesz, ale na potrzeby mojej gry stworzyłem tego faceta.

Krok 9:

Obraz
Obraz

Chcesz dać temu graczowi 2 rzeczy. Zderzacz pudełek 2d i

a Rigidbody 2d i edytuj je tak, aby wyglądały jak na powyższym obrazku.

Krok 10:

Obraz
Obraz

Następnie chcesz przejść do folderu projektów i utworzyć

Skrypt C#. Który nazwałem PlayerMovement.

W tym skrypcie zdefiniujesz 2 zmienne. Publiczny pływak, który nazywam moveSpeed. Który określi, jak szybko jedziesz. I prywatny Rigidbody2D, który nazywam RigidPlayer. Który będzie szukał sztywnych ciał twoich graczy.

Nie zapomnij przejść do edytora Unity, kliknij na odtwarzaczu, dodaj nowy skrypt, przeciągając go do inspektora i ustaw wartość liczbową dla moveSpeed.

Krok 11:

Obraz
Obraz

teraz w swoim Start() chcesz zrobić jedną rzecz, a to

upewnij się, że RigidPlayer może znaleźć Twojego płatnika sztywną 2d. Robisz to za pomocą następującego wiersza kodu:

Krok 12:

Obraz
Obraz

Następnie przechodzimy do update(). Oto dokąd zmierzamy

aby zmusić gracza do ruchu.

robimy to za pomocą dość prostego stwierdzenia, które przyjrzy się ujemnym i dodatnim klawiszom z poziomego (AD) i pionowego (SW) i zastosujemy to jako liczbę do wymuszenia, że zamierzamy umieścić na naszym sztywnym ciele 2d, aby wepchnąć naszego gracza kierunek. Liczba ta zostanie pomnożona przez zmienną moveSpeed.

Krok 13:

Obraz
Obraz

Na koniec chcesz się upewnić, że twój gracz przestanie się poruszać, gdy

nie naciskasz niczego. To lubisz tak:

Teraz, jeśli chcesz użyć swoich 3 innych przycisków do czegokolwiek, zrób to za pomocą instrukcji if: if(Input. GetKeyDown(Keycode. Space))

dla spacji i zamiast spacji umieść literę innych klawiszy, które wybrałeś dla innych klawiszy.

Krok 14: Podłączanie świateł do Arduino

Podłączanie świateł do Arduino
Podłączanie świateł do Arduino

·

Czego będziesz potrzebować, aby podłączyć tę część:

· 9 przewodów połączeniowych

· 4 rezystory

· 4 diody

· 1 arduino uno + kabel usb

· deska do krojenia chleba

Podłączenie do świateł zostanie wykonane przez Uno.

Skończy się tak, jak na powyższym obrazku:

Rezystory podłączasz do dłuższego boku diod LED. A potem podłączasz zworkę z cyfrowego numeru pinu na uno do rezystorów. w tym przypadku użyłem cyfrowych gniazd pinów 9 – 10 -11 -12 te numery będą miały znaczenie, gdy dojdziemy do kodu dla świateł.

Stamtąd chcesz podłączyć zworkę z gniazda naziemnego na arduino Uno do miejsca na desce, jak widać z czarnym drutem na powyższym obrazku.

Następnie chcesz mieć 4 zworki, które prowadzą do krótkiego końca każdej diody LED

Krok 15: Kodowanie Arduino Uno

Kodowanie Arduino Uno
Kodowanie Arduino Uno

W porządku, najpierw ponownie zdefiniujemy nasze zmienne

Więc najpierw jakich wejść cyfrowych używamy do naszych świateł. I stworzymy znak o nazwie myCol[20]

Krok 16:

Obraz
Obraz

Następnie w konfiguracji chcemy ponownie wykonać Serial.begin. Umieść wszystkie nasze diody LED na wyjściu i wyłącz je wszystkie podczas uruchamiania.

Krok 17:

Obraz
Obraz

I na koniec chcesz napisać swoją funkcję pętli.

Spowoduje to, że Arduino odczyta wszelkie dane przychodzące przez port szeregowy, dopóki nie nastąpi jedno z dwóch zdarzeń. Wykryto znak wysuwu wiersza; jest to identyfikowane przez lf, który jest ustawiony na 10 i jest pierwszym argumentem lub została wczytana pewna ilość bajtów. Jest to trzeci argument iw tym przykładzie jest ustawiony tylko na jeden bajt. Dane są przechowywane w zmiennej myCol, która ma wartość char i limit 20. W readBytesUntil jest to drugi argument. Lub innym sposobem wyjaśnienia tego jest Serial.readBytesUntil(terminatorCharacter, buffer, byteLimit);

A stwierdzenia if sprawią, że pewne światła zapalą się, gdy jedność da sygnał. W tym przypadku mam 4 różne kolorowe światła, więc jedność wysyła g, aby włączyła się zielona dioda LED, b, aby włączyła się niebieska dioda LED, r, aby włączyła się czerwona dioda LED, i y, aby włączyła się żółta dioda LED.

Krok 18: Kodowanie świateł po stronie Unity:

Kodowanie świateł po stronie Unity
Kodowanie świateł po stronie Unity

Dobra, najpierw dwie rzeczy, zanim w to wejdziemy.

1. w programie do kodowania arduino przejdź do Narzędzia -> Port -> i sprawdź dla mnie, na którym COM jest włączone twoje uno. W moim przypadku to COM3 (to będzie ważne w kodzie)

2.w unity Przejdź do Edycja -> Ustawienia projektu ->Odtwarzacz następnie w inspektorze kliknij na inne ustawienia przejdź do Poziomu zgodności Api i Przełącz z podsieci. NET 2.0 na po prostu. NET 2.0

Ok, gotowe. Przejdźmy do tego.

Kliknij prawym przyciskiem myszy swoją hierarchię i kliknij Utwórz pusty.

Będzie to pusty obiekt gry, który po prostu będzie istniał w twojej grze, aby przechowywać dla nas jeden skrypt. Nazwałem ten obiekt Init.

Krok 19:

Obraz
Obraz

Następnie przejdź do zakładki projekty i utwórz nowy skrypt C#

i nazwij to Wysyłaniem.

Pierwszą rzeczą, którą robisz, jest zapisywanie tych wierszy w sekcjach using twojego kodu:

za pomocą System. IO. Ports;

za pomocą System. Threading;

dzięki temu możemy użyć zmiennej SerialPort

Krok 20:

Obraz
Obraz

w tym skrypcie stworzymy następujące zmienne. Teraz zauważ, że mam tam COM3, może to być dla ciebie inne, jak omówiliśmy na początku tego kroku. Jeśli tak, zastąp 3 cyfrą, którą podałeś.

Krok 21:

Obraz
Obraz

Na początku mówimy, że skrypt ma używać OpenConnection

funkcja, którą napiszemy za chwilę

aktualizacja jest bardziej testem niż cokolwiek, ale jeśli chcesz ją dołączyć, służy do testowania wiadomości wysyłanych do unity. Możesz to uczciwie zignorować.

Krok 22:

Obraz
Obraz

Okej teraz dla tej funkcji OpenConnection. To jest po prostu duży

Instrukcja if/else, która utrzymuje połączenie otwarte, po prostu skopiuj ją tak, jak napisano i powinno być dobrze.

Krok 23:

Obraz
Obraz

Teraz pamiętaj z kodu arduino, który kazałem to sprawdzić

sygnalizuje, że jedność do niego wyśle.

cóż, to się dzieje. W moim przypadku podłączyłem 4 światła, więc napisałem 4 funkcje, które są niezwykle proste. Jedyne, co robią, to kiedy są wzywani, wysyłają list do arduino. Kiedy arduino dostanie tę literę, zapali się światło odpowiadające tej literze.

Krok 24:

Obraz
Obraz

Możesz się zastanawiać, jak mam to tak nazwać

funkcjonować? Cóż, robisz to za pomocą jednej prostej linii w dowolnym innym skrypcie c#, którego używasz w swojej grze. Wysyłanie. NazwyFunkcjitutaj();. Na przykład w mojej grze gracz ma za zadanie zebrać 4 kolorowe kule. Napisałem więc mały skrypt, który upewnia się, że kiedy zbliży się do jednej i naciśnie prawy przycisk, podniesie ją i wyśle sygnał do arduino, że w tym przypadku żółta kula została podniesiona. Żeby wiedział, ok muszę włączyć żółtą diodę LED:

Możesz umieścić ten jeden wiersz kodu w dowolnym miejscu. Jeśli chcesz, aby zapalał się po rozpoczęciu gry, wstaw go w funkcję start. Chcesz, aby zapaliło się, gdy umrze, umieść to w swojej funkcji dla śmierci graczy. Poeksperymentuj trochę. Zdecydowałem się, aby światła były czymś w rodzaju elementu interfejsu użytkownika poza grą, aby śledzić kule, które musisz zebrać, bez zaśmiecania ekranu.

Zalecana: