Բովանդակություն:

Arduino Game Controller With Lights Responding Your Unity Game :: 24 քայլ
Arduino Game Controller With Lights Responding Your Unity Game :: 24 քայլ

Video: Arduino Game Controller With Lights Responding Your Unity Game :: 24 քայլ

Video: Arduino Game Controller With Lights Responding Your Unity Game :: 24 քայլ
Video: Arduino Gyro Game controller 2024, Հուլիսի
Anonim
Arduino Game Controller- ով լույսերը, որոնք արձագանքում են ձեր միասնության խաղին
Arduino Game Controller- ով լույսերը, որոնք արձագանքում են ձեր միասնության խաղին

Սկզբում ես սա գրեցի բառով: Սա առաջին անգամն է, երբ ես օգտագործում եմ խրատելի, այնպես որ ամեն անգամ, երբ ասում եմ, գրեք կոդը այնպես, որ իմանաք, որ ես նկատի ունեմ այդ քայլի վերևի պատկերը:

Այս նախագծում ես օգտագործում եմ 2 arduino- ն ՝ 2 առանձին բիթ կոդ գործարկելու համար, քանի որ որոշակի խնդիր ունեի աշխատել միայն մեկի հետ

Սրանք են Ունոն և Լեոնարդոն

ընդհանուր առմամբ սա այն է, ինչ ձեզ հարկավոր է այս նախագիծը սահելու համար:

· 7 կոճակ

· 23 jumper լարեր

· 1 arduino Leonardo + USB մալուխ

· 4 դիմադրություն · 4 լուսարձակներ

· 1 arduino uno + USB մալուխ

· 2 տախտակ

Քայլ 1. Միացրեք կառավարման կոճակները Arduino- ին

Կառավարման կոճակները միացրեք Arduino- ին
Կառավարման կոճակները միացրեք Arduino- ին

Այս հատվածը միացնելու համար ձեզ հարկավոր է.

· 7 կոճակ

· 14 թռիչքային լարեր

· 1 arduino Leonardo + USB մալուխ

· Տախտակ

Կոճակները միացնելը բավականին պարզ է, բայց կարող են արագորեն խառնաշփոթ դառնալ պատկերների տեսքով ցուցադրելու համար:

· Առաջինը ձեզանից տեղադրեք կոճակները այն դիրքերում, որոնք ես նշեցի վերևի նկարի վրա:

· Երկրորդը, դուք ցանկանում եք arduino Leonardo- ի գետնանցումից ցատկիչը միացնել հացաթխման մինուս շարքում:

· Այժմ դուք միացնողներ միացնում եք մինուս տողի ցանկացած վայրից դեպի այն շարքը, որը համընկնում է ձեր կոճակի աջ սեղմակի հետ: սա ուժ կտա դրան:

· Հաջորդը, դուք ցանկանում եք մի jumper մետաղալար միացնել անընդմեջ, որը համընկնում է ձեր կոճակի ձախ քորոցին Լեոնարդոյի թվային մուտքի անցքերի հետ: Այստեղ կոճակների համար ես օգտագործել եմ անցք 2 - 3 - 4 - 5 - 6 - 7- 8

Ես միայն ցույց տվեցի, որ պատկերը մուտքագրում է 8 -ը, որովհետև այն դառնում է շատ խառնաշփոթ պատկեր ՝ ցույց տալու համար միմյանց անցնող բոլոր լարերը:

Քայլ 2. Arduino Leonardo- ի կոդավորումը

Arduino Leonardo- ի կոդավորումը
Arduino Leonardo- ի կոդավորումը

Այսպիսով, ձեզ ասելու համար, թե ինչու եմ ես օգտագործում Լեոնարդոյին դրա համար: Քանի որ այն ունի որոշակի չիպ, որը Uno- ն չունի, ինչը ստիպում է համակարգչին ճանաչել այն որպես USB մուտքային սարք: Շատ նման էր ստեղնաշարի: Դա մեզ թույլ է տալիս անել մի բան, որը մեր նախագծի ծրագրավորողների կյանքը շատ ավելի հեշտ է դարձնում: Ստեղնաշարի նմանակում: Մենք համակարգչին կխաբենք մտածելու, որ մենք սեղմում ենք ստեղնաշարի որոշակի ստեղներ, երբ իրականում սեղմում ենք մեր վերահսկիչի կոճակները:

Այժմ ես քայլելու եմ, կարծում եք, որ կոդը քայլ առ քայլ է:

Սկզբից մինչև վերջ, մենք ներառում ենք Keyboard.h: Սա թույլ կտա մեզ օգտագործել ստեղնաշարի գործառույթները, որոնք մենք կօգտագործենք մեր ծածկագրում:

Քայլ 3:

Պատկեր
Պատկեր

Այնուհետև մենք պետք է սահմանենք թվային մուտքի անցքերը, որոնք մենք պատրաստվում ենք օգտագործել

Լեոնարդո յուրաքանչյուր կոճակի համար:

Ես նաև նրանցից յուրաքանչյուրին անվանակոչել եմ այն բանալու անունով, որը ես պատրաստվում եմ ընդօրինակել:

Քայլ 4:

Պատկեր
Պատկեր

Այնտեղից մենք անցնում ենք տեղադրման գործառույթին: Սա պատմում է

arduino- ն ինչ է անում գործարկման ժամանակ:

նախ գրում ենք Serial.begin- ը, որը կբացի սերիական նավահանգիստը և տվյալների արագությունը սահմանում է 9600 բիթ / վրկ

և մենք սահմանում ենք, որ բոլոր անուններով կապում են մուտքեր:

Քայլ 5:

Պատկեր
Պատկեր

Եվ վերջապես, մենք գրում ենք մեր հանգույցի գործառույթը, որը կստուգի `արդյոք

կոճակները սեղմվում են և arduino- ին ասում, թե ինչպես արձագանքել դրան:

Սկզբում մենք գրում ենք Keyboard.begin- ը, որը arduino- ին կասի, որ նա պետք է հոգ տանի մեզ ՝ օգտագործելով ստեղնաշարի գործառույթները

Քայլ 6:

Պատկեր
Պատկեր
Պատկեր
Պատկեր
Պատկեր
Պատկեր

Այնուհետև յուրաքանչյուր կոճակի համար մենք գրում ենք if/else հայտարարությունը, որն այսպես է ընթանում

Այսպիսով, այն, ինչ ասացի arduino- ին այստեղ.

Դուք հիմնականում կրկնում եք կոդի այս բլոկը ձեր վերահսկիչի յուրաքանչյուր կոճակի համար: յուրաքանչյուր փոփոխականի փոփոխություններով և այն բանալիներով, որոնք պետք է ընդօրինակեն փոփոխականին

Քայլ 7:

Պատկեր
Պատկեր

Բանալիները, որոնք մենք ասացինք համակարգչին, որ այստեղ խփի, W - A - S - D են, որոնք

համակարգչային խաղերում և E-Q- ում տեղաշարժի չափանիշ են և տիեզերական տող, որն այս ծածկագրում ճանաչված է որպես «որոնք են այն կոճակները, որոնք ես օգտագործում եմ վերցնելու համար ՝ հեռացնել և կրակել իմ խաղում»: Ազատորեն փոխեք դրանք այն բանալիներով, որոնք զգում եք, որ ավելի լավ են աշխատում ձեր խաղի/վերահսկիչի համար:

Հետո, վերջապես, մենք arduino- ին ասում ենք, որ դադարեցնի Ստեղնաշարի ստուգումը: վերջ

Քայլ 8. Միասնության մեջ շարժման կոդավորումը

Միասնության մեջ կոդավորման շարժում
Միասնության մեջ կոդավորման շարժում

Նախ թույլ տվեք ասել ձեզ, որ ես դա պատրաստում եմ 2d խաղի համար

օրինակները, որոնք դուք կտեսնեք, դրա համար են ստեղծված: Հիմնականում նշանակում է, թե որտեղ եմ ես օգտագործում վեկտոր 2 -ը, եթե դուք աշխատում եք եռաչափում, ապա կօգտագործեք վեկտոր 3 -ը: քանի որ դուք պետք է անհանգստանաք շարժման լրացուցիչ չափի մասին 3d- ում:

Այժմ arduino- ի կողմից ստեղնաշարի նմանակումն օգտագործելու պատճառն այն է, որ Unity- ն կառուցված է ստեղնաշարի ստեղները ճանաչելու համար, որը մենք կարող ենք օգտագործել:

Եթե ձեր նախագիծը միասնաբար բացեք, գնացեք Խմբագրել -> settingsրագրի կարգավորումներ -> Մուտք: Ձեր տեսուչում կարող եք տեսնել, որ այն գործարկում է մուտքային կառավարիչը: Որտեղ, եթե սեղմում եք Axes- ի վրա, կարող եք տեսնել մուտքի անունների մի ամբողջ փունջ, որոնք սովորաբար օգտագործվում են համակարգիչների վերահսկիչների համար, ինչպիսին մենք այժմ պատրաստում ենք: 2 մուտքագրումները, որոնք մենք պատրաստվում ենք օգտագործել, հորիզոնական և ուղղահայաց են, որոնք, ըստ ձեզ, կռահեցիք, որ դա W-A-S-D է:

Նախ ցանկանում եք օբյեկտ դարձնել ձեր միասնության տեսարանների հիերարխիայում, որը կլինի ձեր նվագարկիչը: Իմ դեպքում այս զվարճալի փոքրիկ տղան լինելը: Սա կարող է լինել այն, ինչ ձեզ հարկավոր է, բայց իմ խաղի նպատակով ես ստեղծեցի այս տղային:

Քայլ 9:

Պատկեր
Պատկեր

Դուք ցանկանում եք այս խաղացողին տալ 2 բան: Տուփի բախիչ 2d և

a Rigidbody 2d և խմբագրել դրանք, որպեսզի նման լինեն վերը նշված պատկերին:

Քայլ 10:

Պատկեր
Պատկեր

Այնուհետև ցանկանում եք մտնել ձեր նախագծերի թղթապանակ և ստեղծել ա

C# սցենար: Որը ես անվանեցի PlayerMovement:

Այս սցենարում դուք պատրաստվում եք սահմանել 2 փոփոխական: Հասարակական բոց, որը ես անվանում եմ moveSpeed: Որը կորոշի, թե որքան արագ եք գնում: Եվ մասնավոր Rigidbody2D որը ես անվանում եմ RigidPlayer: Որը կփնտրի ձեր խաղացողներին rigidbody:

Չմոռանաք հասնել ձեր միասնության խմբագրիչին, կտտացրեք ձեր նվագարկիչին և ավելացրեք այս նոր սցենարը ՝ այն քարշ տալով տեսուչին և մի շարք արժեք սահմանեք moveSpeed- ի համար:

Քայլ 11:

Պատկեր
Պատկեր

այժմ ձեր Սկիզբում () ցանկանում եք անել մի բան, և դա անելն է

համոզվեք, որ ձեր RigidPlayer- ը կարող է գտնել ձեր վճարողի կարծր մարմինը 2d: Դուք դա անում եք կոդի հետևյալ տողով.

Քայլ 12:

Պատկեր
Պատկեր

Այնուհետեւ մենք անցնում ենք թարմացման (): Ահա թե ուր ենք գնում

խաղացողին ստիպել շարժվել:

մենք դա անում ենք բավականին պարզ, եթե մի հայտարարությամբ, որը կանդրադառնա հորիզոնական (մ.թ.) և ուղղահայաց (արևմուտք) բացասական և դրական ստեղներին և կկիրառի, որ ուժի համար մենք մեր կոշտ մարմնով 2 դնելու ենք մեր խաղացողին ներս մղելու համար: ուղղություն. Այդ թիվը բազմապատկվելու է moveSpeed փոփոխականով:

Քայլ 13:

Պատկեր
Պատկեր

Ի վերջո, ցանկանում եք համոզվել, որ երբ խաղացողը դադարում է շարժվել

դու ոչինչ չես սեղմում Սա ձեզ դուր է գալիս այսպես.

Այժմ, եթե ցանկանում եք օգտագործել ձեր 3 այլ կոճակները այն ամենի համար, ինչ անում եք այս if հայտարարությամբ. If (Input. GetKeyDown (Keycode. Space))

spacebar- ի համար և տիեզերքի փոխարեն դրեք մյուս ստեղների տառը, որը դուք ընտրել եք օգտագործել մյուս ստեղների համար:

Քայլ 14: Միացրեք լույսերը Arduino- ին

Միացնել լույսերը Arduino- ին
Միացնել լույսերը Arduino- ին

·

Այս հատվածը միացնելու համար ձեզ հարկավոր է.

· 9 jumper լարեր

· 4 դիմադրություն

· 4 led

· 1 arduino uno + USB մալուխ

· Տախտակ

Լապտերների միացումը կկատարվի Uno- ի միջոցով:

Այն կավարտվի վերևի այս պատկերի տեսքով.

Դուք ռեզիստորները միացնում եք LED- ների երկար կողմին: Այնուհետև միացրեք jumper- ը uno- ի թվային կապի համարից դեպի ռեզիստորներ: Այս դեպքում ես օգտագործել եմ թվային կապի slots 9 -10 -11 -12 այս թվերը տեղին կլինեն, երբ հասնենք լույսերի կոդին:

Այնտեղից դուք ցանկանում եք մի jumper կապել ձեր arduino Uno- ի գետնային անցքից դեպի ձեր տախտակի տեղը, ինչպես երևում է վերևում պատկերված սև մետաղալարով:

Այնուհետև ցանկանում եք ունենալ 4 թռիչք, որոնք բոլորն առաջնորդում են յուրաքանչյուր LED- ի կարճ ծայրին

Քայլ 15. Arduino Uno- ի կոդավորումը

Arduino Uno- ի կոդավորումը
Arduino Uno- ի կոդավորումը

Լավ, առաջին հերթին մենք նորից կսահմանենք մեր փոփոխականները

Այսպիսով, առաջին հերթին, թե որ թվային միջոցներն ենք օգտագործում մեր լույսերի համար: Եվ մենք պատրաստելու ենք myCol անունով ածուխ [20]

Քայլ 16:

Պատկեր
Պատկեր

Այնուհետև տեղադրման մեջ մենք ցանկանում ենք կրկին կատարել Serial.begin- ը: Տեղադրեք մեր բոլոր LED- ները Ելքի վրա և անջատեք դրանք բոլորը գործարկման ժամանակ:

Քայլ 17:

Պատկեր
Պատկեր

Եվ վերջապես, դուք ցանկանում եք գրել ձեր հանգույցի գործառույթը:

Սա կհանգեցնի նրան, որ Arduino- ն կկարդա սերիական միջոցով մուտքագրվող ցանկացած տվյալ, մինչև տեղի ունենա երկու իրադարձություններից մեկը: Կայքի հոսքի բնույթ է հայտնաբերվում. սա նույնականացվում է lf- ով, որը 10 է և առաջին արգումենտն է կամ կարդացվել է որոշակի քանակությամբ բայթ: Սա երրորդ փաստարկն է, և այս օրինակի համար սահմանվում է ընդամենը մեկ բայթ: Տվյալները պահվում են փոփոխական myCol- ում, որը դրված է char և 20 սահմանաչափ: ReadBytesUntil սա երկրորդ փաստարկն է: Կամ դա բացատրելու այլ եղանակ է Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Իսկ եթե հայտարարությունները կապահովեն, որ որոշակի լույսեր միանան, երբ միասնությունը ազդանշան տա: Այս դեպքում ես ստացա 4 տարբեր գույնի լույսեր, այնպես որ ես միասնություն եմ ուղարկում կանաչ LED- ի միացման համար, b- ի համար `կապույտ LED- ի, r- ի` կարմիր LED- ի և y- ի `դեղին LED- ի համար:

Քայլ 18: Կոդավորման լույսեր Միասնության կողմ

Coding Lights Unity Side
Coding Lights Unity Side

Oke 2 բան նախ նախքան դրան անդրադառնալը:

1. Ձեր arduino կոդավորման ծրագրում գնացեք Գործիք -> Պորտ -> և ստուգեք, թե որ COM- ում է ձեր uno- ն: Իմ դեպքում դրա COM3- ը (սա կարևոր կլինի ծածկագրում)

2. միասնության մեջ Գնացեք Խմբագրել -> settingsրագրի կարգավորումներ -> Խաղացող, այնուհետև տեսուչում կտտացրեք այլ պարամետրերին և անցեք Api համատեղելիության մակարդակ և անցեք այն. NET 2.0 ենթացանցից ընդամենը. NET 2.0

Լավ, դա ավարտված է: Եկեք մտնենք դրա մեջ:

Աջ սեղմեք ձեր հիերարխիայի վրա և կտտացրեք Ստեղծեք դատարկ:

Սա կլինի դատարկ խաղային օբյեկտ, որը պարզապես գոյություն կունենա ձեր խաղում `մեզ համար մեկ սցենար պահելու համար: Այս օբյեկտը ես անվանել եմ Init:

Քայլ 19:

Պատկեր
Պատկեր

Այնուհետև մտեք ձեր նախագծերի ներդիր և ստեղծեք նոր C# սցենար

և կոչեք այն Ուղարկում:

Առաջին բանը, որ դուք անում եք, ձեր կոդի օգտագործվող հատվածներում տողերին գրելն է.

օգտագործելով System. IO. Ports;

օգտագործելով System. Threading;

սա ստիպում է, որ մենք կարողանանք օգտագործել SerialPort փոփոխականը

Քայլ 20:

Պատկեր
Պատկեր

այս սցենարում մենք պատրաստվում ենք կատարել հետևյալ փոփոխականները: Այժմ նշեք, որ ես այնտեղ ստացել եմ COM3, սա ձեզ համար կարող է տարբեր լինել, ինչպես մենք քննարկեցինք այս քայլի սկզբում: Եթե այն փոխարինում է 3 -ը ձեզ համար նշված թվով:

Քայլ 21:

Պատկեր
Պատկեր

Սկզբում մենք ասում ենք, որ սցենարը պետք է օգտագործի OpenConnection

գործառույթ, որը մենք մի փոքր գրելու ենք

թարմացումն ավելի շատ փորձություն է, քան որևէ այլ բան, բայց եթե ցանկանում եք այն ներառել, ապա ստուգեք հաղորդագրությունները, որոնք ուղարկվում են միասնության: Դուք կարող եք անկեղծորեն անտեսել այն:

Քայլ 22:

Պատկեր
Պատկեր

Լավ հիմա, այս OpenConnection գործառույթի համար: Սա պարզապես մեծ է

if/else հայտարարությունը, որը կապը բաց է պահում, պարզապես պատճենեք այն գրվածի պես, և դուք լավ կլինեք:

Քայլ 23:

Պատկեր
Պատկեր

Այժմ հիշեք arduino կոդից, որի համար այն ստուգել եմ

ազդանշաններ, որ միասնությունը կուղարկի դրան:

լավ, սա այն է, որտեղ դա տեղի է ունենում: Իմ դեպքում ես 4 լուսարձակներ կապեցի, այնպես որ ես գրեցի չափազանց պարզ 4 գործառույթ: Նրանք անում են միայն այն, երբ իրենց զանգում են, նամակ են ուղարկում arduino- ին: Երբ arduino- ն ստանում է այդ տառը, այն լուսավորում է նշված տառին համապատասխան լույսը:

Քայլ 24:

Պատկեր
Պատկեր

Դուք կարող եք մտածել, թե ինչպես կարող եմ դա անվանել

գործառույթ? Դե, դա անում եք մեկ պարզ տողով ՝ ձեր ցանկացած այլ c# սցենարներում, որոնք օգտագործում եք ձեր խաղի համար: Sending. NameFunctionhere ();. Օրինակ ՝ իմ խաղում խաղացողին հանձնարարվում է հավաքել 4 գունավոր գունդ: Այսպիսով, ես գրեցի մի փոքրիկ սցենար, որը համոզված է, որ երբ նա մոտենում է մեկին և սեղմում աջ կոճակը, նա վերցնում է այն և այն ազդանշան է ուղարկում arduino- ին, որ այս դեպքում Դեղին գունդն արդեն վերցված է: Որպեսզի դա իմանա, լավ, ես պետք է միացնեմ Դեղին LED- ը.

Դուք կարող եք տեղադրել այս մեկ տող ծածկագիրը ցանկացած վայրում, որտեղ ցանկանում եք: Եթե ցանկանում եք, որ այն լուսավորվի, երբ խաղը սկսվի, տեղադրեք այն մեկնարկի գործառույթում: Wantանկանում եք, որ այն լուսավորվի, երբ նա մահանա, դա դարձրեք ձեր գործառույթը խաղացողների մահվան համար: Մի փոքր փորձարկեք: Ես ընտրում եմ, որ լույսերը խաղից դուրս մի տեսակ ui տարր դարձնեն, որպեսզի հետևեմ այն հավաքած գունդերին, որոնք հավաքել ես ՝ առանց էկրանը շաղ տալու:

Խորհուրդ ենք տալիս: