INHOUDSOPGAWE:
- Voorrade
- Stap 1: Video -oorsig Y spelontwerpdokument
- Stap 2: Montaje Del Circuito
- Stap 3: Onderwerp die funksie van Al Arduino
- Stap 4: Creación De Sprites Y Personajes
- Stap 5: Importar Los Sprites 'n Godot Engine Para La Implementacion Del Vídeo Juego
- Stap 6: Beskikking van die los elemente en pantalla Y Configuración del Proyecto
- Stap 7: Creación De Los Scripts
- Stap 8: Integrasie (Control + Videojuego)
Video: Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
Modelle vir videoprogramme wat ons toelaat om die gebruik van funksies en funksies vir ons programme te verlig, sowel as om programme te deel met die funksie van sagteware vir ons en ons kan nie ArduPack gebruik nie.
-Juan Camilo Guzmán-Sebastián Carmona-Juan Diego Bustamante-Jhonatan Rodriguez
Voorrade
WEMOS LOLIN 32.
Dos sensores HC SR 04.
Pantalla LED 1920x1080, 24, 24MK430H.
Altavoces 2.2W, 3, 5 mm, logitech S120.
Arduino IDE (Para el funcionamiento del control)
Piskel (Para los sprites y personajes). Godot (Para la programación del Vídeo Juego).
Librerias: pySerial (vir die programmatuur van die ESP32 -programmatuur) NewPing_v1.9.1 (vir die leer van die sensore) blekeyboard (vir die komende programme vir video -simulasies en tegnologie)
Stap 1: Video -oorsig Y spelontwerpdokument
En esta sección mostramos la razón de ser de el proyecto y su Game Design Document
Stap 2: Montaje Del Circuito
Ons kan ook hierdie sensore a la placa Wemos Lolin32 gebruik om 'n prentjie te gebruik: 5v en die GND vir die alimentasie, die sensor van die pinne, die echo en die sneller, en dit kan ook 'n aantal spesiale funksies word usamos en el código, die esta manera se lograra la detección de los movimientos de la mano para mover al personaje y el ángulo del disparo.
Stap 3: Onderwerp die funksie van Al Arduino
Primero debemos añadir las librerías necesarias, al descargarlas deberemos ir al Arduino IDE y en Sketch, include library, add. Zip Library.. buscamos and agregamos la librerías proporcionadas.
NewPing
BleKeyboard
Para poder usar correctamente la placa con arduino IDE usaremos pyserial.
-Primero, aflaai Python, aflaai van 'n PIP -argief, 'n unieke Python -program en 'n kommando kry vir pyp.py, posteriormente en 'n konsole nuut van Python om 'n kommando te beskryf: Python -m pip install pyserial, si todo funcionado correctamente ya podremos usar la placa con Arduino IDE
Ons kan die funksies van die beheerfunksies in ag neem, sowel as die argiefkontroller.ino.
Eerstens kan u die waardevolle sensore van die nabygeleë, die biblioteek se BleKeyboard vir dieselfde simulasie van arriba, abajo, izquierda en derecha
Stap 4: Creación De Sprites Y Personajes
Deberemos usar un creador de sprites libre para poder crear propios personajes, objetos, enemigos etc.
Ons kan die creador piskel gebruik (https://www.piskelapp.com) vir die beheer van die persone, die beheerder kan die redakteur toelaat om foto's van png's te verwerk (Para permir transparencia).
Stap 5: Importar Los Sprites 'n Godot Engine Para La Implementacion Del Vídeo Juego
U kan die oorspronklike weergawes van 'n video vir 'n poder gebruik. Para importar los sprites al juego, añadimos un nodo de sprite y en sus propiedades elegimos como textura la imagen-p.webp
Stap 6: Beskikking van die los elemente en pantalla Y Configuración del Proyecto
Die esta manera is een van die elemente wat ons vir die video kan registreer, maar ook vir 'n knoppie of 'n otro (Como el caso del jugador con su sprite y collider más su brazo).
Nota: Algunas configuraciones de los nodos son necesarios para el correcto funcionamiento, como verificar que los nodos tienen conectados correct eventes (En este caso los eventos que implican a la bala, el enemigo y al jugador), Asignarle los grupos correspondientes a los nodos: Jugador en Enemigo kan 'n groep met 'n ander nommer en 'n LimiteBalas van 'n groot skerm opstel, 'n konfigurasie van die tamas en 'n proyecto> ajustes de proyecto> 'n eenheid van 1600x600 as 'n ander beeld van 'n poder kan ons 'n korrekte toetsing gee, maar ons kan ook die funksies van 'n persoon verdeel en 'n uiteensetting van 'n persoon in 'n la ventana gee. por defecto tenemos las flechas (Arriba y abajo para altura y izquierda y derecha para el angulo).
Stap 7: Creación De Los Scripts
Daar is verskillende skripte vir bewegende persone, voorwerpe, skripte vir afwykings, opnames, afskrywings, oudio's en deteksies vir die einde van die dag. 'N Goeie enjin kan die programmeerbare skripte van die programme vir ons gebruik.
'N Vervolg van die instansies van die scripts van die volgende maniere:
"nombreScript.cs (NombreNodo) -> beskrywing"
Vir 'n skripsie of 'n knoppie, klik hier om 'n enkele klik of 'n enkele knoppie te gee, 'n nuwe naam en 'n langskrif vir die teks.
Scripts para el control del nivel: infinite_bg.cs (Level1) -> El movimiento infinito del fondo, calcular pointaje y determinar cuando pierde.
met behulp van Godot, met behulp van System;
openbare klas infinite_bg: Node
{openbare dubbele punt = 0; openbare bool vivo = waar; private Sprite agtergronde = nuwe Sprite [5]; private vlot bg_width = 1598f; private float move_speed = 400f; private vlot min_X = -1300f; // Gebel wanneer die knoop vir die eerste keer die toneelboom binnegaan. openbare override void _Ready () {for (int i = 1; i <6; i ++) {backgrounds [i-1] = GetNode ("Background"+i); }}
// Elke raam genoem. 'delta' is die tyd wat verloop het sedert die vorige raam.
openbare override void _Process (float delta) {for (int i = 0; i <backgrounds. Length; i ++) {Vector2 temp = backgrounds . GetPosition (); temp.x -= move_speed * delta; as (temp.x <= min_X) {temp.x += bg_width * agtergronde. Lengte; } agtergronde . SetPosition (temp); } as (vivo) {puntaje += 0,01; Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = nuwe Vector2 (0, 0); BotonReinicio. Scale = escala; Etiket Puntaje = GetNode ("CanvasLayer/puntaje"); Puntaje. Text = Math. Round (puntaje, 0). ToString (); } anders {Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = nuwe Vector2 (1, 1); BotonReinicio. Scale = escala; }
}
}
Reinicio: botonReinicio.gd (botonReinicio) -> Beheer van die funksionele funksie van 'n werknemer.
brei Area2D uit
func _on_Area2D_input_event (viewport, event, shape_idx):
as gebeurtenis InputEventMouseButton is: as event.is_pressed (): get_tree (). reload_current_scene ()
Jugador: jugador.gd (Jugador) -> Beheer van die film.
brei KinematicBody2D uit
var beweging = Vector2 ()
func _ready ():
druk (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 beweging = move_and_slide (beweging)
Disparo: Disparo_ Brazo.gd (Brazo) -> controla el angulo del arma and instancia un nuevo disparo cada cierto tiempo
brei Area2D uit
var bala = preload ("res: //Escena/bala.tscn");
var disparo = waar; uitvoer var velocidad = 1000; uitvoer var verhouding = 0,4;
# Elke raam genoem. 'delta' is die tyd wat verloop het sedert die vorige raam.
func _process (delta): as rotation_degrees> -40: if Input.is_action_pressed ("ui_left"): rotation_degrees += -5 if 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 = rotasie_grade; bala_creada.apply_impulse (Vector2 (), Vector2 (velocidad, 0).rotated (rotation)) get_tree (). get_root (). add_child (bala_creada); disparo = vals; opbrengs (get_tree (). create_timer (verhouding), "time -out") disparo = true;
Colisiones: enemigo.gd (Enemigo) y bala.gd (Bala) -> verificar y actuar ante una colisión (Enemigo y bala) (Enemigo y jugador).
brei KinematicBody2D uit
#Bepaal die snelheid van vyandigheid
var velocidad = -500; func _process (delta): move_and_slide (Vector2 (velocidad, 0)) slaag
func _on_Area2D_body_entered (liggaam):
as body.is_in_group ("Jugador"): body.queue_free (); get_node ("/root/Level1"). vivo = vals; as body.is_in_group ("skerm"): queue_free ();
brei RigidBody2D uit
#
func _on_Bala_body_entered (liggaam):
as body.is_in_group ("Enemigo"): body.queue_free (); queue_free (); get_node ("/root/Level1"). puntaje += 5; as body.is_in_group ("skerm"): queue_free ();
Vyande: EnemySpawner.gd (EnemySpawner)-> aparición aleatoria de enemigos.
brei Node uit
var vyand = voorlaai ("res: //Escena/Enemigo.tscn");
var aparicion = 0,8; export var aparecer = true;
funksieproses (delta):
if (aparecer): spawn () aparecer = false; opbrengs (get_tree (). create_timer (aparicion), "time -out") aparecer = true; func spawn (): var enemigo = vyand.instansie (); var pos = Vector2 (); pos.x = 1632; pos.y = rand_reeks (32, 592); enemigo.set_posisie (pos); get_node ("houer"). add_child (enemigo)
Los nodos Enemigo y bala is encuentran en dos escenas onafhanklike, wat toman su mismo nombre, bala.tscn y enemigo.tscn.
Git con video speel:
github.com/jcamiloguzman/ArduPack
Stap 8: Integrasie (Control + Videojuego)
U kan ook die funksionele funksies van die nuutste videobestuur en die nuestro -beheer in ag neem, maar dit kan ook 'n soortgelyke integrasie van beheer wees. nuestra computadora, para ello debemos conectar el circuito con el código y los sensores montados y funcionando y nuestro juego ejecutándose, en el momento de encender el control, estará buscando un emparejamiento vía Bluetooth, lo que haremos será emparejar y conectarlo con nurarra comput al juego, as todo ha funcionado correctamente se podría disfrutar de ArduPack con su control no convencional.
Daar is ook 'n nuut beskikbare Bluetooth en buskamera's met 'n ESP32 BLE -sleutelbord, wat 'n ander elektroniese en elektroniese sleutelbord kan kies.
'N Juffrou!
Aanbeveel:
Hoe om verbrande Arduino of ESP32 te herstel: 5 stappe
Hoe om verbrande Arduino of ESP32 te herstel: in hierdie video leer u hoe u u uitgebrande Arduino of ESP32 kan regmaak! Dit kan u 'n uitstekende finansiële inkomste bied, met iets wat u graag wil doen. Ek het twee nuwe gereedskap gebruik en dit was 'n soldeerstasie wat ek nie gedink het so goedkoop werk nie
LoRa 3 tot 8 km draadlose kommunikasie met lae koste E32 (sx1278/sx1276) -toestel vir Arduino, Esp8266 of Esp32: 15 stappe
LoRa 3 km tot 8 km draadlose kommunikasie met lae koste E32 (sx1278/sx1276) -apparaat vir Arduino, Esp8266 of Esp32: ek skep 'n biblioteek om EBYTE E32 te bestuur, gebaseer op die Semtech -reeks LoRa -toestelle, baie kragtig, eenvoudig en goedkoop. 3 km weergawe hier, 8 km weergawe hier Hulle kan oor 'n afstand van 3000m tot 8000m werk, en hulle het baie funksies en
Hoe om e -posse te stuur met aanhangsels met Arduino, Esp32 en Esp8266: 6 stappe
Hoe om e -posse te stuur met aanhangsels met Arduino, Esp32 en Esp8266: Hier wil ek die weergawe 2 van my biblioteek EMailSender verduidelik, 'n groot evolusie met betrekking tot weergawe 1, met ondersteuning vir Arduino met w5100, w5200 en w5500 ethernet -skild en enc28J60 kloon toestelle en ondersteuning vir esp32 en esp8266. Nou kan u ad
Die installering van die ESP32 -bord in Arduino IDE (Windows, Mac OS X, Linux): 7 stappe
Die installering van die ESP32-bord in Arduino IDE (Windows, Mac OS X, Linux): Daar is 'n byvoeging vir die Arduino IDE waarmee u die ESP32 kan programmeer met behulp van die Arduino IDE en sy programmeertaal. In hierdie handleiding wys ons hoe u die ESP32 -bord in Arduino IDE kan installeer, of u Windows, Mac OS X of Li
Aan die gang met ESP32 - Die installering van ESP32 -borde in Arduino IDE - ESP32 Knipper -kode: 3 stappe
Aan die gang met ESP32 | Die installering van ESP32 -borde in Arduino IDE | ESP32 Blink -kode: In hierdie instruksies sal ons sien hoe om met esp32 te begin werk en hoe om esp32 -borde in Arduino IDE te installeer, en ons sal esp 32 programmeer om 'n blink kode te gebruik met behulp van arduino ide