Isi kandungan:

Arduino Game Controller With Lights Menanggapi Unity Game Anda :: 24 Langkah
Arduino Game Controller With Lights Menanggapi Unity Game Anda :: 24 Langkah

Video: Arduino Game Controller With Lights Menanggapi Unity Game Anda :: 24 Langkah

Video: Arduino Game Controller With Lights Menanggapi Unity Game Anda :: 24 Langkah
Video: Built an AWESOME MINECRAFT Controller 2024, November
Anonim
Arduino Game Controller With Lights Menanggapi Permainan Unity Anda
Arduino Game Controller With Lights Menanggapi Permainan Unity Anda

Pertama saya menulis perkara ini dengan kata-kata. Ini adalah kali pertama saya menggunakan arahan, setiap kali saya mengatakan: tuliskan kod, jadi ketahuilah bahawa saya merujuk kepada gambar di bahagian atas langkah itu.

Dalam projek ini, saya menggunakan 2 arduino untuk menjalankan 2 bit kod yang berasingan kerana saya menghadapi masalah untuk menggunakannya hanya dengan satu

Ini adalah Uno dan Leonardo

secara keseluruhan inilah yang anda perlukan untuk membuat projek ini.

· 7 butang tekan

· 23 wayar pelompat

· 1 kabel arduino Leonardo + usb

· 4 perintang · 4 led

· 1 kabel arduino uno + usb

· 2 papan roti

Langkah 1: Menghubungkan Butang Kawalan ke Arduino

Menghubungkan Butang Kawalan ke Arduino
Menghubungkan Butang Kawalan ke Arduino

Apa yang anda perlukan untuk menghubungkan bahagian ini:

· 7 butang tekan

· 14 wayar pelompat

· 1 kabel arduino Leonardo + usb

· Papan roti

Butang cukup mudah untuk disambungkan tetapi dengan cepat dapat menjadi kekacauan untuk dipaparkan dalam bentuk gambar.

· Pertama anda meletakkan butang tekan pada kedudukan yang saya tandakan pada gambar di atas.

· Kedua, anda ingin memasang pelompat dari slot tanah di arduino Leonardo ke baris minus papan roti.

· Sekarang anda menghubungkan jumper dari mana sahaja di baris tolak ke baris yang sesuai dengan pin kanan butang tekan anda. ini akan memberi kuasa kepadanya.

· Seterusnya anda ingin memasang wayar pelompat dari baris yang sesuai dengan pin kiri butang tekan anda ke slot input digital Leonardo. Untuk butang di sini saya menggunakan slot 2 - 3 - 4 - 5 - 6 - 7- 8

Saya hanya menunjukkan wayar akan memasukkan 8 pada gambar kerana ia menjadi gambar yang sangat tidak kemas untuk menunjukkan kepada anda semua wayar yang saling bersilang.

Langkah 2: Mengekodkan Arduino Leonardo:

Mengekodkan Arduino Leonardo
Mengekodkan Arduino Leonardo

Oleh itu, untuk memberitahu anda alasan saya menggunakan Leonardo untuk ini. Ini kerana ia mempunyai cip tertentu yang tidak dimiliki oleh Uno yang menjadikan komputer mengenalinya sebagai peranti input usb. Seperti papan kekunci. Yang membolehkan kita melakukan sesuatu yang menjadikan hidup kita sebagai pengaturcara untuk projek ini jauh lebih mudah. Peniruan papan kekunci. Kita akan memperdayakan komputer untuk berfikir bahawa kita menekan kekunci tertentu pada papan kekunci semasa kita sebenarnya menekan butang pada alat kawalan kita.

Sekarang saya akan memandu anda berfikir kodnya selangkah demi selangkah.

Mula-mula di bahagian atas kami menyertakan Keyboard.h. Ini akan membolehkan kita menggunakan fungsi papan kekunci yang akan kita gunakan dalam kod kita.

Langkah 3:

Imej
Imej

Kemudian kita perlu menentukan slot input digital yang akan kita gunakan pada

Leonardo untuk setiap butang.

Saya juga telah menamakan setiap satu daripada kunci yang akan dicontohi.

Langkah 4:

Imej
Imej

Dari sana kita masuk ke fungsi persediaan. Ini memberitahu

arduino apa yang dilakukannya semasa memulakan.

pertama kita menulis Serial.begin yang akan membuka port bersiri dan menetapkan kadar data hingga 9600 bps

dan kami mendefinisikan semua pin bernama sebagai input.

Langkah 5:

Imej
Imej

Dan akhirnya kami menulis fungsi gelung kami yang akan memeriksa sama ada

butang ditekan dan beritahu arduino bagaimana bertindak balas terhadapnya.

Mula-mula kita menulis Keyboard.begin yang akan memberitahu arduino bahawa dia perlu memerhatikan kita menggunakan fungsi papan kekunci

Langkah 6:

Imej
Imej
Imej
Imej
Imej
Imej

Kemudian untuk setiap butang kami menulis pernyataan if / else yang seperti ini

Oleh itu, apa yang saya sampaikan kepada arduino di sini adalah: Sekiranya butang kiri saya ditekan pada pengawal membuat komputer berfikir bahawa kita menekan kekunci "a" dan jika itu tidak berlaku, anggaplah bahawa kita telah melepaskan kunci tersebut.

Anda pada dasarnya mengulangi sekatan kod ini untuk setiap butang pada pengawal anda. dengan perubahan untuk setiap pemboleh ubah dan kunci yang perlu dicontohi oleh pemboleh ubah

Langkah 7:

Imej
Imej

Kunci yang kami suruh komputer di sini adalah W - A - S - D yang

cukup banyak standard untuk pergerakan dalam permainan pc dan E - Q - dan bar ruang yang dalam kod ini dikenali sebagai '' yang merupakan butang yang saya gunakan untuk mengambil - menolak dan menembak dalam permainan saya. Jangan ragu untuk menukarnya kepada kekunci apa pun yang anda rasa berfungsi lebih baik untuk permainan / pengawal anda.

Kemudian terakhir kami memberitahu arduino untuk menghentikan pemeriksaan Keyboard.end yang mana

Langkah 8: Pergerakan Pengekodan dalam Perpaduan:

Pergerakan Pengekodan dalam Perpaduan
Pergerakan Pengekodan dalam Perpaduan

Pertama saya beritahu saya bahawa saya membuat ini untuk permainan 2d

contoh yang akan anda lihat dibina untuk itu. Terutama bermaksud di mana saya menggunakan vector2 jika anda bekerja dalam 3d anda akan menggunakan vector3. kerana anda perlu risau tentang dimensi pergerakan tambahan dalam bentuk 3d.

Sekarang alasan saya menggunakan emulasi Papan Kekunci di sisi arduino adalah kerana Unity mempunyai sesuatu untuk mengenali kekunci pada papan kekunci yang boleh kita gunakan.

Sekiranya anda membuka projek anda secara bersatu pergi ke Edit -> Tetapan projek -> Input. Anda dapat melihat di pemeriksa anda bahawa pengurus input dapat digunakan. Di mana jika anda mengklik pada Axes anda dapat melihat sejumlah besar nama input terbuka yang biasanya digunakan untuk pengawal pc seperti yang kami buat sekarang. 2 input yang akan kami gunakan adalah Horizontal dan Vertical yang memeriksa anda meneka W-A-S-D.

Mula-mula anda ingin membuat objek Dalam hierarki adegan perpaduan anda yang akan menjadi pemain anda. Dalam kes saya menjadi lelaki kecil yang menyeronokkan ini. Ini boleh menjadi apa sahaja yang anda perlukan tetapi untuk tujuan permainan saya, saya menjadikan lelaki ini.

Langkah 9:

Imej
Imej

Anda mahu memberikan 2 perkara kepada pemain ini. Pelindung kotak 2d dan

a Rigidbody 2d dan edit seperti gambar di atas.

Langkah 10:

Imej
Imej

Kemudian anda mahu masuk ke folder projek anda dan buat a

Skrip C #. Yang saya namakan PlayerMovement.

Dalam skrip ini, anda akan menentukan 2 pemboleh ubah. Float awam yang saya namakan moveSpeed. Yang akan menentukan seberapa pantas anda pergi. Dan Rigidbody2D peribadi yang saya panggil RigidPlayer. Yang akan mencari pemain anda tegar.

Jangan lupa untuk mendapatkan editor penyatuan anda, klik pada pemain anda, tambahkan skrip baru ini dengan menyeretnya ke pemeriksa dan tetapkan nilai nombor untuk moveSpeed.

Langkah 11:

Imej
Imej

sekarang dalam Mula () anda ingin melakukan satu perkara dan itu adalah

pastikan RigidPlayer anda dapat menemui pembayar rigidbody 2d anda. Anda melakukannya dengan baris kod berikut:

Langkah 12:

Imej
Imej

Kemudian kita beralih ke kemas kini (). Di sinilah kita hendak pergi

untuk membuat pemain bergerak.

kami melakukannya dengan pernyataan if yang cukup mudah yang akan melihat kunci negatif dan positif dari Horizontal (AD) dan Vertical (SW) dan menerapkannya sebagai bilangan untuk memaksa kita akan menggunakan rigidbody 2d kita untuk mendorong pemain kita masuk arah. Nombor itu akan didarabkan dengan pemboleh ubah bergerakSpeed.

Langkah 13:

Imej
Imej

Terakhir anda ingin memastikan pemain anda berhenti bergerak ketika

anda tidak menekan apa-apa. Ini anda suka:

Sekarang jika anda mahu menggunakan 3 butang anda yang lain untuk apa sahaja yang anda lakukan dengan pernyataan if ini: if (Input. GetKeyDown (Keycode. Space))

untuk bar ruang dan bukannya ruang meletakkan huruf kunci lain yang anda pilih untuk digunakan untuk kekunci lain.

Langkah 14: Menyambungkan Lampu ke Arduino

Menyambungkan Lampu ke Arduino
Menyambungkan Lampu ke Arduino

·

Apa yang anda perlukan untuk menghubungkan bahagian ini:

· 9 wayar pelompat

· 4 perintang

· 4 led

· 1 kabel arduino uno + usb

· Papan roti

Penyambungan lampu akan dilakukan melalui Uno.

Ini akan kelihatan seperti gambar di atas:

Anda pasangkan perintang ke sisi panjang LED. Kemudian anda menyambungkan pelompat dari nombor pin digital pada uno ke perintang. dalam kes ini saya menggunakan slot pin digital 9 - 10 -11 -12 nombor ini akan relevan apabila kita mendapatkan kod lampu.

Dari sana anda ingin memasang pelompat dari slot tanah di arduino Uno anda ke tempat di papan anda seperti yang dilihat dengan wayar hitam pada gambar di atas.

Kemudian anda mahu mempunyai 4 penerjun yang menuju ke hujung pendek setiap LED

Langkah 15: Mengekodkan Arduino Uno

Mengekodkan Arduino Uno
Mengekodkan Arduino Uno

Baiklah pertama kita akan menentukan pemboleh ubah kita lagi

Oleh itu, input digital mana yang kita gunakan untuk lampu kita. Dan kami akan membuat char yang dipanggil myCol [20]

Langkah 16:

Imej
Imej

Kemudian dalam persediaan kita mahu melakukan Serial.begin lagi. Matikan semua LED kami pada Output dan matikan semuanya pada permulaan.

Langkah 17:

Imej
Imej

Dan akhirnya anda ingin menulis fungsi gelung anda.

Ini akan menyebabkan Arduino membaca setiap data yang masuk melalui siri sehingga salah satu daripada dua peristiwa berlaku. Sama ada watak suapan baris dikesan; ini dikenal pasti oleh lf yang ditetapkan ke 10 dan merupakan argumen pertama atau sejumlah bait telah dibaca. Ini adalah argumen ketiga dan untuk contoh ini ditetapkan hanya satu bait. Data disimpan dalam pemboleh ubah myCol, yang diatur ke char dan had 20. Dalam readBytesUntuk ini adalah argumen kedua. Atau kaedah lain untuk menjelaskannya ialah Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Dan pernyataan if akan memastikan lampu tertentu menyala ketika perpaduan memberi isyarat. Dalam kes ini, saya mendapat 4 lampu berwarna yang berbeza sehingga saya membuat unity mengirim g agar LED hijau menyala, b untuk LED biru menyala, r untuk LED merah menyala dan y untuk LED kuning menyala.

Langkah 18: Coding Lights Unity Side:

Bahagian Perpaduan Lampu Pengekodan
Bahagian Perpaduan Lampu Pengekodan

Oke 2 perkara terlebih dahulu sebelum kita memasuki perkara ini.

1.dalam program pengekodan arduino anda, pergi ke Tool -> Port -> dan periksa COM mana uno anda aktif. Dalam kes saya, COM3 (ini akan menjadi penting dalam kodnya)

2. dalam kesatuan Pergi ke Edit -> Tetapan projek -> Pemain kemudian pada pemeriksa klik pada tetapan lain pergi ke Tahap keserasian Api dan Tukar dari subnet. NET 2.0 ke. NET 2.0

Oke sudah selesai. Mari masuk ke dalamnya.

Klik kanan pada hierarki anda dan klik Buat kosong.

Ini akan menjadi objek permainan kosong yang hanya akan ada dalam permainan anda untuk menyimpan satu skrip untuk kami. Saya telah memanggil objek ini sebagai Init.

Langkah 19:

Imej
Imej

Kemudian masuk ke tab projek anda dan buat skrip C # baru

dan memanggilnya Menghantar.

Perkara pertama yang anda lakukan ialah menuliskannya pada baris di bahagian kod anda yang menggunakan:

menggunakan System. IO. Ports;

menggunakan System. Threading;

ini menjadikannya kita boleh menggunakan pemboleh ubah SerialPort

Langkah 20:

Imej
Imej

dalam skrip ini kita akan membuat pemboleh ubah berikut. Sekarang perhatikan saya mendapat COM3 di sana ini mungkin berbeza untuk anda seperti yang kita bincangkan pada awal langkah ini. Sekiranya ia menggantikan 3 dengan nombor yang dinyatakan untuk anda.

Langkah 21:

Imej
Imej

Pada mulanya kami memberitahu skrip yang akan digunakan adalah OpenConnection

fungsi yang akan kita tulis sebentar lagi

kemas kini lebih merupakan ujian daripada apa-apa tetapi jika anda mahu memasukkannya untuk menguji mesej yang dihantar kepada kesatuan. Anda boleh mengabaikannya dengan jujur.

Langkah 22:

Imej
Imej

Oke sekarang untuk fungsi OpenConnection ini. Ini hanya besar

jika / pernyataan lain yang membuat sambungan terbuka hanya salin seperti ditulis dan anda pasti baik-baik saja.

Langkah 23:

Imej
Imej

Sekarang Ingat dari kod arduino yang saya buat untuk diperiksa

memberi isyarat bahawa perpaduan akan menghantarkannya.

baik inilah yang berlaku. Dalam kes saya, saya memasang 4 lampu sehingga saya menulis 4 fungsi yang sangat mudah. Yang mereka buat hanyalah ketika dipanggil mereka menghantar surat kepada arduino. Apabila arduino mendapatkan huruf itu, ia menyala cahaya yang sesuai dengan huruf tersebut.

Langkah 24:

Imej
Imej

Anda mungkin tertanya-tanya bagaimana saya memanggilnya

berfungsi? Baik anda melakukannya dengan satu baris sederhana dalam skrip c # anda yang lain yang anda gunakan untuk permainan anda. Menghantar. NameFungsidi sini ();. Jadi misalnya dalam permainan saya pemain ditugaskan untuk mengumpulkan 4 bola berwarna. Oleh itu, saya menulis sedikit skrip yang memastikan bahawa apabila dia mendekati satu dan menekan butang kanan, dia mengambilnya dan ia akan menghantar isyarat kepada arduino bahawa dalam hal ini bola Kuning telah diambil. Agar ia tahu, oke saya harus menyalakan LED Kuning:

Anda boleh meletakkan satu baris kod ini di mana sahaja anda mahu. Sekiranya anda mahu ia menyala ketika permainan dimulakan, masukkan ke dalam fungsi permulaan. Mahu ia menyala ketika dia mati meletakkannya dalam fungsi anda untuk kematian pemain. Percubaan sedikit. Saya memilih untuk menjadikan lampu semacam elemen ui di luar permainan untuk mengawasi bola yang harus anda kumpulkan tanpa mengacaukan layar.

Disyorkan: