Mundarija:
- Ta'minotlar
- 1 -qadam: Y o'yining dizayn hujjati
- 2 -qadam: Montaje Del Circuito
- 3 -qadam: Subir Codigo Del Funcionamiento Al Arduino
- 4 -qadam: Creación De Sprites Y Personajes
- 5 -qadam: Los -Sprites -ni import qilish Godot dvigateli, Del Vídeo Juego
- 6 -qadam: De Los Elementos va Pantalla Y konfiguratsiyasi Del Proyecto
- 7 -qadam: De Los skriptlarini yaratish
- 8 -qadam: Integrasion (Boshqarish + Videojuego)
Video: ArduPack -ni ajratish (Videojuego2D Godot3 + Arduino ESP32): 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Video protseduralari protokoli o'chirilgan bo'lsa, ArduPack dasturiy ta'minotini boshqarishning hech qanday sharti yo'q.
-Xuan Kamilo Guzman-Sebastyan Karmona-Xuan Diego Bustamante-Jonat Rodriges
Ta'minotlar
WEMOS LOLIN 32.
Dos sensori HC SR 04.
Pantalla LED 1920x1080, 24, 24MK430H.
Altavoces 2.2W, 3, 5 mm, logitech S120.
Arduino IDE (boshqaruv funktsiyalari)
Piskel (pari los sprites y personajes). Godot (dasturiy ta'minot del Vídeo Juego dasturi).
Ma'lumotlar bazasi: pySerial (ESP32 dasturiy ta'minoti) NewPing_v1.9.1 (ma'lumotlar sensori uchun) blekeyboard (kompyuter bilan aloqa o'rnatilishi mumkin)
1 -qadam: Y o'yining dizayn hujjati
O'yinni loyihalash uchun hujjatlarni rasmiylashtirish kerak.
2 -qadam: Montaje Del Circuito
Aniqki, bu erda siz Wemos Lolin32 -ni ko'rishingiz mumkin: u 5 G va GND -ni ishlating, sensorli qarag'aylar, qarama -qarshiliklar, hech qanday echim yo'q, tetiklantiruvchi emas, balki eng yaxshi tasvirlar. bu sizning shaxsiy ma'lumotlaringiz, shaxsiy ma'lumotlaringiz va shaxsiy ma'lumotlaringiz bilan bog'liq.
3 -qadam: Subir Codigo Del Funcionamiento Al Arduino
Sketch, kutubxonani o'z ichiga oladi, kutubxonani o'z ichiga oladi, zip kutubxonasini qo'shadi.
NewPing
BleKeyboard
Foydalanuvchi ma'lumotlarini IDE useremos pyserial yordamida tuzatdi.
-Python -ni birdaniga yuklab oling, keyin PIP -ni arxivga yuklang, bu Python -ning bir xil konsolini, keyin bir -birining orqasida, Python -ni bir -biriga bog'lab qo'ying: Python -m -ni o'rnatish. Arduino IDE -ni ishlatib, uni to'g'rilashingiz mumkin
Boshqaruv funktsiyalari va vazifalari, shuningdek, arxiv tekshiruvi.ino.
Sensorli sensorlar ham, yaqin sensorlar ham, sensorli sensorlar, BleKeyboard simulyatsiyalari, simulyatsiya va simulyatsiyalar ham, xuddi shunday, yaqin masofada ham.
4 -qadam: Creación De Sprites Y Personajes
Shaxsiy, objet, dushman va hk.
Bu eng mashhur dasturlardan biri (https://www.piskelapp.com), siz o'zingizning shaxsiy ma'lumotlaringizni boshqarishingiz mumkin, bu muharrirlar tomonidan muhrlangan muharrirlar -p.webp
5 -qadam: Los -Sprites -ni import qilish Godot dvigateli, Del Vídeo Juego
Videotasvirlar yordamida siz o'zingiz uchun eng yaxshi dasturni yaratishingiz mumkin. Ma'lumotlar los sprites, jodugar, nodo de sprite y en sus propiedades elegimos como textura-p.webp
6 -qadam: De Los Elementos va Pantalla Y konfiguratsiyasi Del Proyecto
Alohida ma'lumotlarga ko'ra, bu erda hech qanday muammo yo'q, lekin bu bir vaqtning o'zida hech qanday muammo tug'dirmaydi..
Eslatma: Algunas configuraciones de los nodos, necesarios right for funcionamiento, compo verificar que los nodos conectados conectados correcte los eventos (En este caso los eventos que implican a la bala, el enigigo y al jugador), guruhlar va guruhlar.: LimitBalas tili va guruhlari ekranini sozlash, ekranni sozlash, uning loyihasi> 1600x600 darajadagi proyekto> ventilyatorlar, shuningdek, eng katta vazifalarni bajaradi. aprecian en la imagen para poder serc accedidos correctamente, tambén podemos definitos los controles que de asignan a la altura y ángulo de disparo del personaje en la ventana Proyecto> ajustes del proyecto> mapas de entrada, aquit podemos definitos las utlasar quaremer. defecto tenemos las flechas (Arriba y abajo para altura y izquierda y derecha para el angulo).
7 -qadam: De Los skriptlarini yaratish
Shaxsiy skriptlar, shuningdek, personajlar, enemigos, skriptlar, puntaje, enemigos, audio yozuvlar. Yaxshi vosita dvigatellar uchun dasturiy ta'minot va C# -ni ishlatishda yordam beradi. GD.
Skriptlar doimiy ravishda bajarilishi kerak:
"nombreScript.cs (NombreNodo) -> tavsiflash"
Skriptni yozib bo'lmaydigan bo'lsa, tugmachani bosish tugmachasini bosing va eskogemos nomrenini tanlang.
Boshqaruv skriptlari nivel: infinite_bg.cs (Level1) -> Ma'lumotlar almashinuvi, hisob -kitoblar va hisob -kitoblar.
Godotdan foydalanish; tizimdan foydalanish;
public class infinite_bg: tugun
{ochiq juftlik puntaje = 0; public bool vivo = rost; xususiy Sprite fonlari = yangi Sprite [5]; shaxsiy float bg_width = 1598f; shaxsiy float move_speed = 400f; shaxsiy float min_X = -1300f; // Tugun sahna daraxtiga birinchi marta kirganda chaqiriladi. public override void _Ready () {for (int i = 1; i <6; i ++) {backgrounds [i-1] = GetNode ("Fon"+i); }}
// Har bir kadrga qo'ng'iroq qilingan. "delta" - bu oldingi ramkadan o'tgan vaqt.
umumiy bekor qilish void _Process (float delta) {for (int i = 0; i <backgrounds. Length; i ++) {Vector2 temp = backgrounds . GetPosition (); temp.x -= harakatlanish tezligi * delta; if (temp.x <= min_X) {temp.x += bg_width * backgrounds. Length; } fon . SetPosition (temp); } if (vivo) {puntaje += 0,01; Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = yangi Vector2 (0, 0); BotonReinicio. Scale = eskalalar; Puntaje yorlig'i = GetNode ("CanvasLayer/puntaje"); Puntaje. Text = Math. Round (puntaje, 0). ToString (); } else {Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = yangi Vector2 (1, 1); BotonReinicio. Scale = eskalalar; }
}
}
Reinicio: botonReinicio.gd (botonReinicio) -> Boshqaruv vazifalarini bajaring.
2D maydonini kengaytiradi
func _on_Area2D_input_event (ko'rish oynasi, hodisa, shakl_idx):
agar voqea InputEventMouseButton bo'lsa: if event.is_pressed (): get_tree (). reload_current_scene ()
Jugador: jugador.gd (Jugador) -> Boshqaruvni davom ettiring.
KinematicBody2D kengayadi
var motion = Vector2 ()
func _ready ():
chop etish (self.get_path ()); func _physics_process (delta): if (position.y = 570): motion.y = -150 else: if (Input.is_action_pressed ("ui_up")): motion.y += -20 else: if (Input.is_action_pressed ("ui_down"))): motion.y+= 20 harakat = move_and_slide (harakat)
Disparo: Disparo_ Brazo.gd (Brazo) -> vaqtni o'lchash va o'chirish jarayonini boshlang.
2D maydonini kengaytiradi
var bala = oldindan yuklash ("res: //Escena/bala.tscn");
var disparo = rost; eksport var velocidad = 1000; eksport var nisbati = 0,4;
# Har bir kadrga qo'ng'iroq qilingan. "delta" - bu oldingi ramkadan o'tgan vaqt.
func _process (delta): if rotation_degrees> -40: if Input.is_action_pressed ("ui_left"): rotation_degrees += -5 "rotation_degrees <45: if Input.is_action_pressed (" ui_right "): rotation_degrees += 5 if (disparo): var bala_creada = bala.instance (); bala_creada.position = get_global_position (); bala_creada.rotation_degrees = aylanish_degrees; bala_creada.apply_impulse (Vector2 (), Vector2 (velocidad, 0).otirilgan (aylantirish)) get_tree (). get_root (). add_child (bala_creada); disparo = noto'g'ri; rentabellik (get_tree (). create_timer (nisbat), "taymout") disparo = rost;
To'qnashuvlar: enemigo.gd (Enemigo) y bala.gd (Bala) -> aktual ante una colisión (Enemigo y bala) (Enemigo y jugador).
KinematicBody2D kengayadi
#Ma'lumotlar aniqlanishi
var velocidad = -500; func _process (delta): move_and_slide (Vector2 (velocidad, 0)) o'tish
func _on_Area2D_body_entered (tana):
agar body.is_in_group ("Jugador"): body.queue_free (); get_node ("/root/Level1"). vivo = false; agar body.is_in_group ("Ekran"): queue_free ();
RigidBody2D kengayadi
#
func _on_Bala_body_entered (tana):
agar body.is_in_group ("Enemigo"): body.queue_free (); navbat_free (); get_node ("/root/Level1"). puntaje += 5; agar body.is_in_group ("Ekran"): queue_free ();
Dushmanlar: EnemySpawner.gd (EnemySpawner)-> alieatoria deemigos.
tugunni kengaytiradi
var dushman = oldindan yuklash ("res: //Escena/Enemigo.tscn");
var aparicion = 0.8; eksport var aparecer = true;
func _process (delta):
if (aparecer): spawn () aparecer = false; rentabellik (get_tree (). create_timer (aparicion), "timeout") aparecer = true; func spawn (): var enemigo = dushman.instance (); var pos = Vector2 (); pos.x = 1632; pos.y = rand_range (32, 592); enemigo.set_position (pos); get_node ("konteyner"). add_child (enemigo)
Los -Anjeles mustaqil ravishda, eng muhimi, mustaqil ravishda, har qanday noma'lum, bala.tscn va enemigo.tscn.
Videokuzatuvning oxirgi versiyasi:
github.com/jcamiloguzman/ArduPack
8 -qadam: Integrasion (Boshqarish + Videojuego)
Bir vaqtning o'zida videokuzatuv funktsiyalari ham, nuestro -ni ham nazorat qilish mumkin, bu ham bir -biridan farqli o'laroq, siz nazoratni amalga oshirishingiz mumkin. noutbuklar, elektron qurilmalar va elektron qurilmalar bilan aloqa o'rnatiladi, bu nazorat qilish funktsiyalari va vazifalari, bluetooth -ni boshqarish, telefonni ulash va o'rnatish uchun javob beradi. Al -juego, si na todo ha funcionado correctamente, agar siz ArduPack -ni nazorat qilsangiz, bu hech qanday konvensional emas.
ESP32 BLE klaviaturasi Bluetooth -ni o'rnatish bilan bir vaqtda, u avtomatik ravishda avtomatlashtirilgan.
Jugar!
Tavsiya:
DVD pleerni qanday ajratish mumkin: 3 qadam
DVD pleerni qanday ajratish mumkin: Bu eski elektronikani qutqarish bo'yicha qo'llanmalarning ikkinchi qismi. Agar siz oxirgi darslikni ko'rishni istasangiz, bu erni bosing
7 kunlik variant: Harbiy havo kuchlaridan qanday ajratish mumkin: 22 qadam
7 kunlik variant: Harbiy havo kuchlaridan qanday ajratish kerak: Ushbu darslik havo kuchlari ofitseri 7 kunlik variantda havo kuchlarini tark etish uchun qanday ariza berishi mumkinligi asta-sekin rasmlarda ko'rsatilgan. " 7 kunlik variantni ishlatish " yoki " 7 kunlik tanlov " Harbiy havo kuchlaridan ajralib chiqish uchun ariza berish degan ma'noni anglatadi
Amazon Echo -ni ajratish: 6 qadam
Amazon Echo -ni ajratib ko'rsatish: Agar siz menga o'xshasangiz, siz narsalarni ajratib, o'ylab ko'rmaysiz. Mening maqsadim - Amazon Echo -ni xavfsiz tarzda demontaj qilish uchun Internetdagi eng ma'lumotli qo'llanmani yaratish. Mennikini birinchi marta ajratib qo'yganimda, menda hech qanday ko'rsatma yoki ko'rsatma yo'q edi
Printerni qanday ajratish mumkin: 4 qadam
Printerni qanday ajratish mumkin: Bu eski, axlatli elektronikalarni ajratish va ichidagi xazinani qutqarish haqidagi ko'rsatmali ma'lumotlarning birinchi seriyasidir
Arduino g'isht ranglarini ajratish loyihasi: 5 qadam
Arduino g'isht ranglarini ajratish loyihasi: Arduino qo'llanmasida biz o'yinchoq g'ishtim ranglarini Arduino va TCS3200 rang sensori yordamida aniqlashni o'rganamiz. Qo'shimcha ma'lumot olish uchun quyida yozma qo'llanmani o'qishingiz mumkin. Materiallar: Arduino Leonardo x 1TCS3200 x 1 Ko'p karton 180 Servo