Mundarija:

Oddiy birlik nazoratchisi: 5 qadam
Oddiy birlik nazoratchisi: 5 qadam

Video: Oddiy birlik nazoratchisi: 5 qadam

Video: Oddiy birlik nazoratchisi: 5 qadam
Video: Agreement Read Before You Sign [October 17, 2023] 2024, Noyabr
Anonim
Oddiy birlik nazoratchisi
Oddiy birlik nazoratchisi

Tavsif

Bu loyiha - bu men o'yinchi chapga va o'ngga keta oladigan o'yinni boshqarish uchun mo'ljallangan tugmachalarni bosish paytida Unity -ga ma'lumot berishi mumkin bo'lgan juda oddiy nazoratchi. Albatta, siz har doim ko'proq nazorat qilish uchun sozlashingiz mumkin. Qo'shimcha kutubxonalardan foydalanishga hojat yo'q.

1 -qadam: materiallar

Kerakli komponentlar

  • -Arduino 2x qarshilik
  • -[~ 220 Ohm
  • -Simlar
  • -2x tugmalar
  • -Non paneli

2 -qadam: Breadboard

Breadboard
Breadboard

Men arduino GND portini non panelining chap tomonidagi manfiy (-) piniga, 5V ni esa o'ng tomonidagi musbatga (+) ulashdan boshladim.

Shundan so'ng men tugmachalarni kerakli joyga qo'ydim. Va ularni simlar va rezistorlar yordamida ulang.

3 -qadam: Arduino -ni kodlash

Avval siz Arduino -ni ishga tushirish uchun kod yozishingiz kerak bo'ladi. Men nima qilayotganini tushuntiradigan kodga sharhlar qo'ydim.

// Tugmalar ulangan pinlarni e'lon qiling.

const int buttonPin1 = 3; const int buttonPin2 = 4;

bo'sh o'rnatish ()

{// Serial.begin (9600) seriyasini ishga tushiring; // Pimlarni chiqish sifatida sozlang. pinMod (tugmaPin1, Kirish); pinMod (tugmaPin2, Kirish); }

bo'sh halqa ()

{// Agar tugma holatini o'qing, agar (digitalRead (buttonPin1) == YUQORI) {// holat YUQORI bo'lsa, bu qatorni chop eting. Serial.println ("Chap"); kechikish (20); } if (digitalRead (buttonPin2) == HIGH) {// holat HIGH bo'lsa, bu qatorni chop eting. Serial.println ("O'ng"); kechikish (20); }}

4 -qadam: Birlik

Agar sizda tayyor o'yin bo'lmasa, bu kod har qanday o'yin ob'ektida birlikda ishlaydi.

Agar shunday bo'lsa, harakat qilish uchun sizga o'yin ob'ekti kerak bo'ladi.

Oddiylik uchun biz GameObject-> 3D Object-> Cube-ga o'tish orqali kub yaratamiz.

kub sizning sahnangizda bo'lganda, uni tanlang va Komponent qo'shish tugmasini bosing va yangi skript yarating.

System. IO. Ports kutubxonasi ishlashi uchun Api moslik darajasini o'zgartirish kerak bo'ladi.

Buni amalga oshirish uchun Edit-> Project Settings-> Player-ga o'ting

Api moslik darajasini topmaguningizcha bu menyuda pastga siljiting va. Net 2.0 pastki to'plami o'rniga. NET 2.0 ni tanlang.

Siz endi kodlashni boshlashga tayyormiz.

System. Collections -dan foydalanish; System. Collections. Generic -dan foydalanish; UnityEngine -dan foydalanish; System. IO. Ports -dan foydalanish;

PlayerMovement umumiy sinf: MonoBehaviour

{umumiy suzish tezligi; suzish harakati;

SerialPort sp = yangi SerialPort ("COM3", 9600);

bekor boshlash ()

{// OpenSerialPort () ketma -ket portini ochish uchun kodni ishga tushiring; }

bekor OpenSerialPort ()

{// sp. Open () ketma -ket portini oching; sp. ReadTimeout = 1; }

bo'sh harakat (mag'lubiyat yo'nalishi)

{// Arduino qaysi yo'nalishda o'tganini tekshiring, agar (Yo'nalish == "Chap") {harakat = -1; } agar (Yo'nalish == "O'ng") {harakat = 1; } // o'yin ob'ekti ko'chiriladigan miqdorni hisoblang float tarjima = harakat * tezlik; // harakatni gameobject transform. Translate -ga qo'llang (tarjima, 0, 0); }

bekor qilingan yangilanish ()

{if (sp. IsOpen) {try {// ketma -ket portport ochiq bo'lsa, harakat funktsiyasini bajaring va Arduino Harakat (sp. ReadLine ()) bosib chiqarayotgan qatorni o'tkazing; } catch (System. Exception) {

}

}

} }

5 -qadam: Yakuniy eslatmalar

Komponentlaringiz ishlayotganligini tekshiring

Buni yaratish paytida men duch kelgan muammo shundaki, barcha simlar va kodlar to'g'ri edi va hech qanday muammo bo'lmasligi kerak edi, lekin u ishlamayapti. boshqa komponentlar bilan ham shunday bo'lishi mumkin.

Tavsiya: