Talaan ng mga Nilalaman:

Ang Controller ng Arduino Game Na May Mga ilaw na Tumutugon sa Iyong Laro ng Unity :: 24 Hakbang
Ang Controller ng Arduino Game Na May Mga ilaw na Tumutugon sa Iyong Laro ng Unity :: 24 Hakbang

Video: Ang Controller ng Arduino Game Na May Mga ilaw na Tumutugon sa Iyong Laro ng Unity :: 24 Hakbang

Video: Ang Controller ng Arduino Game Na May Mga ilaw na Tumutugon sa Iyong Laro ng Unity :: 24 Hakbang
Video: BARETTO MINI4WD - POST GARA E CHIACCHIERE VARIE 2024, Nobyembre
Anonim
Arduino Game Controller Na May Mga ilaw na Tumutugon sa Iyong Laro sa Unity
Arduino Game Controller Na May Mga ilaw na Tumutugon sa Iyong Laro sa Unity

Una kong isinulat ang bagay na ito sa salita. Ito ang kauna-unahang pagkakataon na gumagamit ako ng itinuturo kaya't tuwing sasabihin ko: isulat ang code tulad ng nalalaman na tumutukoy ako sa imahe sa tuktok ng hakbang na iyon.

Sa proyektong ito gumagamit ako ng 2 arduino's upang magpatakbo ng 2 magkakahiwalay na piraso ng code dahil nagkaroon ako ng problema sa paggana nito sa isa lamang

Ito ang Uno at ang Leonardo

sa kabuuan ito ang kakailanganin mo upang i-breadboard ang proyektong ito.

· 7 mga pindutan ng push

· 23 mga jumper wires

· 1 arduino Leonardo + usb cable

· 4 na resistors · 4 led's

· 1 arduino uno + usb cable

· 2 mga breadboard

Hakbang 1: Pag-hooking ng Mga Pindutan sa Pagkontrol sa Arduino

Pag-hook ng Mga Pindutan sa Pagkontrol kay Arduino
Pag-hook ng Mga Pindutan sa Pagkontrol kay Arduino

Ano ang kakailanganin mong i-hook ang bahaging ito:

· 7 mga pindutan ng push

· 14 na jumper wires

· 1 arduino Leonardo + usb cable

· Breadboard

Ang mga pindutan ay medyo simple upang mag-hook up ngunit maaaring mabilis na maging isang gulo upang ipakita sa form ng imahe.

· Una mong ilagay ang mga push button sa mga posisyon na minarkahan ko sa imahe sa itaas.

· Pangalawa nais mong mag-hook up ng isang jumper mula sa ground slot sa arduino Leonardo sa minus row ng breadboard.

· Ngayon ay na-hook up mo ang mga jumper mula sa kahit saan sa minus row sa hilera na nakahanay sa kanang pin ng push button mo. magpapakain ito ng lakas dito.

· Susunod na nais mong i-hook up ang isang jumper wire mula sa isang hilera na naaayon sa kaliwang pin ng iyong push button sa mga digital slot ng pag-input ng Leonardo. Para sa mga pindutan dito ginamit ko ang slot 2 - 3 - 4 - 5 - 6 - 7- 8

Ipinakita ko lamang ang wire na papunta sa input 8 sa imahe sanhi na ito ay naging isang napaka-magulo larawan upang ipakita sa iyo ang lahat ng mga wire na tumatawid sa bawat isa.

Hakbang 2: Pag-coding sa Arduino Leonardo:

Ang pag-coding sa Arduino Leonardo
Ang pag-coding sa Arduino Leonardo

Kaya't upang sabihin sa iyo ang dahilan kung bakit ko ginagamit si Leonardo para dito. Ito ay dahil mayroong isang tiyak na maliit na tilad na hindi ginagawa ng Uno na ginagawang makilala ito ng computer bilang isang usb input device. Tulad ng Gusto nito sa isang keyboard. Na nagpapahintulot sa amin na gumawa ng isang bagay na ginagawang mas madali ang aming buhay bilang mga programmer para sa proyektong ito. Pagtulad sa keyboard. Susubukan naming linlangin ang computer sa pag-iisip na pinipindot namin ang ilang mga key sa keyboard kapag sa katunayan ay pinipindot namin ang mga pindutan sa aming controller.

Ngayon ay lalakad na ako naisip mo ang code nang sunud-sunod.

Una muna hanggang sa itaas ay nagsasama kami ng Keyboard.h. Papayagan kaming gamitin ang mga pag-andar ng keyboard na gagamitin namin sa aming code.

Hakbang 3:

Larawan
Larawan

Pagkatapos kailangan naming tukuyin ang mga digital slot ng pag-input na gagamitin namin sa

Leonardo para sa bawat pindutan.

Pinangalanan ko rin ang bawat isa sa kanila sa susing gagayahin ko.

Hakbang 4:

Larawan
Larawan

Mula doon makakapasok kami sa pag-andar ng pag-setup. Sinasabi nito sa

arduino kung ano ang ginagawa nito sa pagsisimula.

isinusulat muna namin ang Serial.begin na magbubukas ng serial port at magtatakda ng rate ng data sa 9600 bps

at tinukoy namin ang lahat ay pinangalanan na mga pin upang maging input.

Hakbang 5:

Larawan
Larawan

At sa wakas ay isinusulat namin ang aming pag-andar ng loop na susuriin kung

ang mga pindutan ay pinindot at sabihin sa arduino kung paano tumugon sa na.

Nagsusulat muna kami ng Keyboard.begin kung saan sasabihin sa arduino na kailangan niyang maghanap para sa amin gamit ang mga pag-andar ng keyboard

Hakbang 6:

Larawan
Larawan
Larawan
Larawan
Larawan
Larawan

Pagkatapos para sa bawat pindutan nagsusulat kami ng isang kung / ibang pahayag na ganito

Kaya kung ano ang sinabi ko sa arduino dito ay: Kung ang aking kaliwang pindutan ay na-compress sa controller ipalagay sa computer na pinipindot namin ang "a" key at kung hindi iyon ang kaso ipalagay na binitawan natin ang susi.

Karaniwan mong inuulit ang bloke ng code na ito para sa bawat pindutan sa iyong controller. na may mga pagbabago para sa bawat variable at mga key na kailangan tularan ng variable

Hakbang 7:

Larawan
Larawan

Ang mga susi na sinabi namin sa computer na pindutin dito ay W - A - S - D na alin

ay halos pamantayan para sa paggalaw sa mga laro sa pc at E - Q - at ang spacebar na sa code na ito ay kinikilala bilang '' alin ang mga pindutan na ginagamit ko upang kunin - i-dismiss at sunugin ang aking laro. Huwag mag-atubiling baguhin ang mga ito sa anumang mga key na sa palagay mo ay mas mahusay para sa iyong laro / controller.

Pagkatapos ay panghuli naming sasabihin sa arduino na ihinto ang tseke kung aling Keyboard.end

Hakbang 8: Pagkilos ng Coding sa Unity:

Pagkilos ng Coding sa Unity
Pagkilos ng Coding sa Unity

Hayaan mo muna akong sabihin sa iyo na ginagawa ko ito para sa isang laro na 2d kaya

ang mga halimbawang makikita mo ay naitayo para doon. Pangunahing ibig sabihin kung saan gumagamit ako ng vector2's kung nagtatrabaho ka sa 3d gagamit ka ng vector3's. dahil kakailanganin mong mag-alala tungkol sa labis na sukat ng paggalaw sa 3d.

Ngayon ang dahilan kung bakit ginamit ko ang pagtulad sa Keyboard sa panig ng arduino ay dahil ang Unity ay may isang bagay na bumuo upang makilala ang mga key sa keyboard na maaari naming magamit.

Kung buksan mo ang iyong proyekto sa pagkakaisa pumunta sa I-edit -> Mga setting ng proyekto -> Input. Maaari mong makita sa iyong inspektor na binobola nito ang input manager. Kung saan kung mag-click ka sa Axes maaari mong makita ang isang buong grupo ng mga pangalan ng pag-input na magbubukas na karaniwang ginagamit para sa mga pc controler tulad ng ginagawa namin ngayon. Ang 2 input na gagamitin namin ay Pahalang at Vertical na suriin para sa hulaan mo ito W-A-S-D.

Una nais mong gumawa ng isang bagay Sa iyong hierarchy ng mga eksena ng pagkakaisa na magiging iyong manlalaro. Sa aking kaso sa pagiging masayang maliit na taong ito. Maaari itong maging anumang kailangan mo ito ngunit para sa layunin ng aking laro ginawa ko ang taong ito.

Hakbang 9:

Larawan
Larawan

Nais mong bigyan ang manlalaro na ito ng 2 bagay. Isang box collider 2d at

isang Rigidbody 2d at i-edit ang mga ito upang maging katulad ng imahe sa itaas.

Hakbang 10:

Larawan
Larawan

Pagkatapos ay nais mong pumunta sa iyong mga proyekto folder at lumikha ng isang

C # script. Na pinangalanan ko na PlayerMovement.

Sa script na ito tutukuyin mo ang 2 variable. Isang pampublikong float na tinatawag kong moveSpeed. Alin ang tutukoy kung gaano kabilis ang iyong lakad. At isang pribadong Rigidbody2D na tinatawag kong RigidPlayer. Alin ang hahanapin ang iyong mga manlalaro na matigas.

Huwag kalimutang makapunta sa iyong editor ng pagkakaisa mag-click sa iyong manlalaro idagdag ang bagong script sa pamamagitan ng pag-drag sa inspektor at magtakda ng isang halaga ng numero para sa moveSpeed.

Hakbang 11:

Larawan
Larawan

ngayon sa iyong Start () nais mong gawin ang isang bagay at iyon ay

tiyaking mahahanap ng iyong RigidPlayer ang iyong nagbabayad na tigas 2d. Ginagawa mo iyon sa sumusunod na linya ng code:

Hakbang 12:

Larawan
Larawan

Pagkatapos ay magpatuloy kami sa pag-update (). Dito tayo pupunta

upang makagalaw ang manlalaro.

ginagawa namin iyon sa isang medyo simple kung pahayag na titingnan ang mga negatibo at positibong mga susi mula sa Horizontal (AD) at Vertical (SW) at ilapat iyon bilang isang numero upang pilitin na ilalagay natin ang aming tigas na 2d upang itulak ang aming manlalaro isang direksyon Ang numerong iyon ay magpaparami ng variable ng moveSpeed.

Hakbang 13:

Larawan
Larawan

Panghuli nais mong tiyakin na ang iyong manlalaro ay hihinto sa paggalaw kung kailan

wala kang pipindutin. Gusto mo ito:

Ngayon kung nais mong gamitin ang iyong 3 iba pang mga pindutan para sa anumang gagawin mo na kasama nito kung pahayag: kung (Input. GetKeyDown (Keycode. Space))

para sa spacebar at sa halip na puwang ay ilagay ang titik ng iba pang mga key na pinili mo upang magamit para sa iba pang mga key.

Hakbang 14: Pag-hook ng Mga ilaw sa Arduino

Pag-hook ng Mga ilaw sa Arduino
Pag-hook ng Mga ilaw sa Arduino

·

Ano ang kakailanganin mong i-hook ang bahaging ito:

· 9 na jumper wires

· 4 na resistors

· 4 na humantong

· 1 arduino uno + usb cable

· Breadboard

Ang hookup para sa mga ilaw ay magagawa sa pamamagitan ng Uno.

Magtatapos ito sa hitsura ng imaheng ito sa itaas:

I-hook mo ang mga resistors sa mahabang bahagi ng mga LED. At pagkatapos ay nakakabit mo ang isang jumper mula sa isang digital pin number sa uno sa mga resistors. sa kasong ito ginamit ko ang mga digital pin slot 9 - 10 -11 -12 ang mga numerong ito ay magiging nauugnay kapag nakarating kami sa code para sa mga ilaw.

Mula doon nais mong mag-hook up ng isang jumper mula sa ground slot sa iyong arduino Uno hanggang sa lugar sa iyong board tulad ng nakikita sa itim na kawad sa imahe sa itaas.

Pagkatapos nais mong magkaroon ng 4 na jumper lahat humahantong sa maikling dulo ng bawat LED

Hakbang 15: Pag-coding ng Arduino Uno

Ang pag-coding ng Arduino Uno
Ang pag-coding ng Arduino Uno

Ayos muna sa aming tutukuyin muli ang aming mga variable

Kaya muna kung aling mga digital na input ang ginagamit namin para sa aming mga ilaw. At gagawa kami ng char na tinatawag na myCol [20]

Hakbang 16:

Larawan
Larawan

Pagkatapos sa pag-setup nais naming gawin muli ang Serial.begin. Ilagay ang lahat ng aming mga LED sa Output at i-off ang lahat sa kanila sa pagsisimula.

Hakbang 17:

Larawan
Larawan

At sa wakas nais mong isulat ang iyong pag-andar ng loop.

Magiging sanhi ito upang mabasa ng Arduino ang anumang data na papasok sa pamamagitan ng serial hanggang sa mangyari ang isa sa dalawang mga kaganapan. Alinman ang isang character na feed ng linya ay napansin; ito ay kinilala ng lf na nakatakda sa 10 at ang unang argumento o isang tiyak na halaga ng mga byte na nabasa na. Ito ang pangatlong argumento at para sa halimbawang ito ay itinakda sa isang byte lamang. Ang data ay nakaimbak sa variable myCol, na kung saan ay nakatakda sa char at isang limitasyon ng 20. Sa readBytesUntil ito ang pangalawang argument. O isa pang paraan upang ipaliwanag ito ay Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

At ang kung ang mga pahayag ay tiyakin na ang ilang mga ilaw ay nakabukas kapag ang pagkakaisa ay nagbibigay ng senyas. Sa kasong ito, nakakuha ako ng 4 na magkakaibang mga ilaw na may kulay kaya gumawa ako ng pagkakaisa na magpadala ng g para sa berdeng LED upang i-on, b para sa asul na LED upang i-on, para sa pulang LED upang i-on at y para sa dilaw na LED upang i-on.

Hakbang 18: Side ng Unity Unity ng Coding:

Coding Lights Unity Side
Coding Lights Unity Side

Oke muna ang 2 bagay bago tayo makapunta rito.

1.sa iyong arduino coding program pumunta sa Tool -> Port -> at suriin kung aling COM ang nasa uno mo. Sa aking kaso ang COM3 nito (ito ay magiging mahalaga sa code)

2.sa pagkakaisa Pumunta sa I-edit -> Mga setting ng proyekto -> Player pagkatapos ay i-click ang inspector sa iba pang mga setting pumunta sa Antas ng pagiging tugma ng Api at Ilipat ito mula sa. NET 2.0 subnet sa. NET 2.0 lamang

Oke tapos na yan. Pasukin natin ito.

Mag-right click sa iyong hierarchy at mag-click sa Lumikha ng walang laman.

Ito ay magiging isang walang laman na object ng laro na magkakaroon lamang sa iyong laro upang i-hold ang isang script para sa amin. Tinawag ko ang bagay na ito Init.

Hakbang 19:

Larawan
Larawan

Pagkatapos ay pumunta sa iyong mga proyekto na tab at lumikha ng isang bagong script na C #

at tawagin itong Pagpapadala.

Ang unang bagay na iyong ginagawa ay isulat ang mga ito sa mga linya sa paggamit ng mga seksyon ng iyong code:

gamit ang System. IO. Ports;

gamit ang System. Threading;

Ginagawa ito upang magamit natin ang variable ng SerialPort

Hakbang 20:

Larawan
Larawan

sa script na ito gagawa kami ng mga sumusunod na variable. Ngayon tandaan na nakakuha ako ng COM3 doon na maaaring magkakaiba ito para sa iyo habang tinalakay sa simula ng hakbang na ito. Kung papalitan nito ang 3 ng bilang na sinabi nito para sa iyo.

Hakbang 21:

Larawan
Larawan

Sa simula sinabi namin sa script na gagamitin ay OpenConnection

function na kung saan ay nais naming magsulat ng kaunti

ang pag-update ay higit na isang pagsubok kung gayon anupaman ngunit kung nais mong isama ito upang subukan ang mga mensahe na ipinadala sa pagkakaisa. Maaari mong balewalain ito nang totoo.

Hakbang 22:

Larawan
Larawan

Oke ngayon para sa pagpapaandar na OpenConnection na ito. Malaki lang ito

kung / ibang pahayag na nagpapanatiling bukas ang koneksyon kopyahin lamang ito tulad ng nakasulat at dapat kang maging maayos.

Hakbang 23:

Larawan
Larawan

Ngayon Tandaan mula sa arduino code na ginawa kong suriin para sa

hudyat na ang pagkakaisa ay ipapadala dito.

well dito nangyayari yun. Sa aking kaso nakuha ko ang 4 na ilaw na naka-hook up kaya nagsulat ako ng 4 na pag-andar na sobrang simple. Ang ginagawa lang nila ay kapag tinawag sila ay nagpadala ng isang sulat sa arduino. Kapag nakuha ni arduino ang liham na ito ay sinisindi nito ang ilaw na naaayon sa nasabing liham.

Hakbang 24:

Larawan
Larawan

Maaaring nagtataka ka kung paano ko ito matatawagan

pagpapaandar? Gawin mo ito sa isang simpleng linya sa alinman sa iyong iba pang mga c # script na ginagamit mo para sa iyong laro. Pagpapadala. NameFunctionhere ();. Kaya halimbawa sa aking laro ang manlalaro ay pinapasan upang mangolekta ng 4 na may kulay na mga orb. Kaya't nagsulat ako ng isang maliit na iskrip na tinitiyak na kapag malapit siya sa isa at pinindot ang kanang pindutan ay kinuha niya ito at nagpapadala ito ng senyas sa arduino na sa kasong ito ang Yellow orb ay nakuha. Upang malaman nito, oke kailangan kong buksan ang Yellow LED:

Maaari mong ilagay ang isang linya ng code na ito kahit saan mo gusto. Kung nais mong mag-ilaw ito kapag nagsimula ang laro ilagay ito sa pagsisimula ng pag-andar. Nais na mag-ilaw ito kapag namatay siya na ilagay ito sa iyong pag-andar para sa pagkamatay ng mga manlalaro. Eksperimento sa paligid ng kaunti. Pinili kong gawin ang mga ilaw ng isang uri ng elemento ng ui sa labas ng laro upang subaybayan ang mga orbs na nakolekta mo nang hindi kalat ang screen.

Inirerekumendang: