Mundarija:

ArduPack -ni ajratish (Videojuego2D Godot3 + Arduino ESP32): 8 qadam
ArduPack -ni ajratish (Videojuego2D Godot3 + Arduino ESP32): 8 qadam

Video: ArduPack -ni ajratish (Videojuego2D Godot3 + Arduino ESP32): 8 qadam

Video: ArduPack -ni ajratish (Videojuego2D Godot3 + Arduino ESP32): 8 qadam
Video: Как спрятать данные в ячейках Excel? 2024, Iyul
Anonim
ArduPack -ni ajratish (Videojuego2D Godot3 + Arduino ESP32)
ArduPack -ni ajratish (Videojuego2D Godot3 + Arduino ESP32)

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

Image
Image

O'yinni loyihalash uchun hujjatlarni rasmiylashtirish kerak.

2 -qadam: Montaje Del Circuito

Subir Codigo Del Funcionamiento Al Arduino
Subir Codigo Del Funcionamiento Al Arduino

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

Subir Codigo Del Funcionamiento Al Arduino
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

Creación De Sprites Y Personajes
Creación De Sprites Y Personajes
Creación De Sprites Y Personajes
Creación De Sprites Y Personajes
Creación De Sprites Y Personajes
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

Los Sprites Godot dvigatelini ishga tushiradi, bu Del Vídeo Juego
Los Sprites Godot dvigatelini ishga tushiradi, bu Del Vídeo Juego
Los Sprites Godot dvigatelini ishga tushiradi, bu Del Vídeo Juego
Los Sprites Godot dvigatelini ishga tushiradi, bu 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

Los -Anjeles -dagi elementlarning joylashuvi va sozlanishi Del Proyecto
Los -Anjeles -dagi elementlarning joylashuvi va sozlanishi 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

Creación De Los skriptlari
Creación De Los skriptlari
Creación De Los skriptlari
Creación De Los skriptlari
Creación De Los skriptlari
Creación De Los skriptlari

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)

Integratsiya (Boshqarish + Videojuego)
Integratsiya (Boshqarish + Videojuego)
Integratsiya (Boshqarish + Videojuego)
Integratsiya (Boshqarish + Videojuego)
Integratsiya (Boshqarish + Videojuego)
Integratsiya (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: