תוכן עניינים:
- אספקה
- שלב 1: סקירת וידאו Y מסמך עיצוב משחקים
- שלב 2: Montaje Del Circuito
- שלב 3: Subir Código Del Funcionamiento Al Arduino
- שלב 4: Creación De Sprites Y Personajes
- שלב 5: Importar Los Sprites מנוע Godot עבור La Implementacion Del Vídeo Juego
- שלב 6: Disposición De Los Elementos En Pantalla Y Configuración Del Proyecto
- שלב 7: סקריפטים של Creación De Los
- שלב 8: אינטגרציה (Control + Videojuego)
וִידֵאוֹ: Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
דוגמאות לפרוטוקול וידיאו להפקת תוכנות להפקת תוכנות חופשיות וללא שליטה במספר תוכניות לאירועי תוכנה ולמחלקות התוכנה עם תוכנות חופשיות של תוכנות תוכנה בארהפוק.
-ג'ואן קמילו גוזמן-סבסטיאן כרמונה-חואן דייגו בסטמנטה-ג'ונאטאן רודריגס
אספקה
WEMOS LOLIN 32.
Dos sensores HC SR 04.
Pantalla LED 1920x1080, 24, 24MK430H.
Altavoces 2.2W, 3, 5 מ מ, logitech S120.
Arduino IDE (Para el funcionamiento del control)
פישל (Para los sprites y personajes). גודו (פארה לה תוכנה דל וידיאו ג'וגו).
Librerias: pySerial (עבור תוכנת הקושחה של ESP32) NewPing_v1.9.1 (para leer los datos de los sensores) blekeyboard (עבור התקשורת של ארדואינו עם סרטוני סימולוציה וטכנולוגיה)
שלב 1: סקירת וידאו Y מסמך עיצוב משחקים
En esta sección mostramos la razón de ser de el proyecto y su משחק עיצוב מסמך
שלב 2: Montaje Del Circuito
Se deben conectar los dos sensores a la placa Wemos Lolin32 como se aprecia en la imagen: Utilizamos 5v y el GND para la alimentación, cada sensor posee dos pines, un echo y un trigger, estos pueden ser cualesquiera pero en la imagen especificamos los que usamos en el código, de esta manera se lograra la detección de los movimientos de la mano para mover al personaje y el ángulo del disparo.
שלב 3: Subir Código Del Funcionamiento Al Arduino
Primero debemos añadir las librerías necesarias, al descargarlas deberemos ir al Arduino IDE y en Sketch, כולל ספרייה, הוסף. Zip Library.. buscamos y agregamos la librerías proporcionadas.
NewPing
BleKeyboard
עבור poder usar correctamente la placa con arduino IDE usaremos pyserial.
-Primero, descargaremos Python, procederemos a el el archivo PIP, lo ubicaremos en una consola Python y escribiremos el comando get-pip.py, posteriormente en una consola nueva de Python escribiremos el comando: Python -m pip install pyserial, si todo funcionado correctamente ya podremos usar la placa con Arduino IDE
מבזקים את כל הפעולות עבור שליטה בשליטה.
Este código permite leer los valores de dos sensores de proximidad, y dependiendo de los valores de cada sensor, usa la librería BleKeyboard for simular las pulsasiones de arriba, abajo, izquierda y derecha
שלב 4: Creación De Sprites Y Personajes
Deberemos usar un creador de sprites libre para poder crear propios personajes, objetos, enemigos וכו '.
En este caso se uso el creador piskel (https://www.piskelapp.com) para la creación de los enemigos, el personaje controlable, este e permitt guardar los sprites como imagenes-p.webp
שלב 5: Importar Los Sprites מנוע Godot עבור La Implementacion Del Vídeo Juego
Debemos importar los sprites anteriormente creados para poder empezar la creación del videojuego. עבור היבוא לוס ספריטס אל ג'וגו, אנהמימוס ונודו דה ספרייט ו en sus propiedades elegimos como textura la imagen-p.webp
שלב 6: Disposición De Los Elementos En Pantalla Y Configuración Del Proyecto
De esta manera se accordgan cada uno de los elementos al entorno para desarrollar el videojuego, para agregar un nodo perteneciente a otro (Como el caso del jugador con su sprite y collider más su brazo) damos click en el nodo y damos click en añadir hijo.
הערה: Algunas configuraciones de los nodos son necesarios para el correcto funcionamiento, como verificar que los nodos tienen conectados correctamente los eventos (En este caso los eventos que implican a la bala, el enemigo y al jugador), Asignarle los grupos correspondentses a los nodos: Jugador y Enemigo tienen sus grupos con su mismo nombre y LimiteBalas tiene el grupo llamado Screen, configurar el tamaño de la ventana en Proyecto> ajustes de proyecto> ventana a un 1600x600, y tener and cuenta que algunos nodos deben tener los misos nombres que se aprecian en la imagen para poder ser accedidos correctamente, también podemos definir los controles que se asignan a la altura y ángulo de disparo del personaje en la ventana Proyecto> ajustes del proyecto> mapas de entrada, aquí podemos definir las teclas que quaremos utiliz por defecto tenemos las flechas (Arriba y abajo para altura y izquierda y derecha para el angulo).
שלב 7: סקריפטים של Creación De Los
כתבות שונות של תסריטים, סרטים, תסריטים שונים, נקודות, תוכניות אודיו, והגדרות שונות של משחקים. מנוע Goodot יכול להכין את התסריטים התוכנתיים של usando C# o usar su propio lenguaje. GD.
המשך המסקנות של התכנים והסקריפטים של אסטה מנרה:
"nombreScript.cs (NombreNodo) -> תיאור"
עבור סקריפט אחד של התסריט, אפשר ללחוץ על הסמל הזה וללחוץ על הסמל.
סקריפטים עבור שליטה ברמה: infinite_bg.cs (רמה 1) -> מידע על אינפיניטו של פונדו, נקודה מחשבנית וקבועה פירוד.
שימוש ב- Godot; שימוש ב- System;
מעמד ציבורי infinite_bg: צומת
{puntaje ציבורי כפול = 0; ציבור בול vivo = נכון; רקע פרטי של Sprite = ספרייט חדש [5]; מצוף פרטי bg_width = 1598f; צף פרטי move_speed = 400f; מצוף פרטי min_X = -1300f; // מתקשר כאשר הצומת נכנס לראשונה לעץ הסצנה. לדחות את הציבור חלל _Ready () {for (int i = 1; i <6; i ++) {backgrounds [i-1] = GetNode ("רקע"+i); }}
// התקשר לכל פריים. 'דלתא' היא הזמן שחלף מאז המסגרת הקודמת.
הציבור עוקף את החלל _Process (float delta) {for (int i = 0; i <backgrounds. Length; i ++) {Vector2 temp = backgrounds . GetPosition (); temp.x -= מהירות מהירות * דלתא; אם (temp.x <= min_X) {temp.x += bg_width * רקעים.אורך; } רקעים . SetPosition (טמפ '); } אם (vivo) {puntaje += 0.01; Area2D BotonReinicio = GetNode ("BotonReinicio"); וקטור 2 escala = וקטור 2 חדש (0, 0); BotonReinicio. Scale = escala; תווית Puntaje = GetNode ("CanvasLayer/puntaje"); Puntaje. Text = Math. Round (puntaje, 0). ToString (); } else {Area2D BotonReinicio = GetNode ("BotonReinicio"); וקטור 2 אסקלה = וקטור 2 חדש (1, 1); BotonReinicio. Scale = escala; }
}
}
Reinicio: botonReinicio.gd (botonReinicio) -> Controla el funcionamiento del botón עבור volver a empezar.
מרחיב את שטח 2D
func _on_Area2D_input_event (viewport, event, shape_idx):
אם האירוע הוא InputEventMouseButton: אם event.is_pressed (): get_tree (). reload_current_scene ()
Jugador: jugador.gd (Jugador) -> Controla el movimiento del jugador.
מרחיב את KinematicBody2D
var motion = Vector2 ()
func _ready ():
הדפס (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 motion = move_and_slide (תנועה)
Disparo: Disparo_ Brazo.gd (Brazo) -> controla el angulo del arma y instancia un nuevo disparo cada cierto tiempo
מרחיב את שטח 2D
var bala = preload ("res: //Escena/bala.tscn");
var disparo = נכון; יצוא var velocidad = 1000; יחס var לייצא = 0.4;
# התקשר לכל מסגרת. 'דלתא' היא הזמן שחלף מאז המסגרת הקודמת.
func _process (delta): if 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 = rotation_degrees; bala_creada.apply_impulse (Vector2 (), Vector2 (velocidad, 0).rotated (סיבוב)) get_tree (). get_root (). add_child (bala_creada); דיספרו = שקר; תשואה (get_tree (). create_timer (יחס), "פסק זמן") disparo = true;
Colisiones: enemigo.gd (Enemigo) y bala.gd (Bala) -> verificar y actuar ante una colisión (Enemigo y bala) (Enemigo y jugador).
מרחיב את KinematicBody2D
#דטרמינה la velocidad del enemigo
var velocidad = -500; func_process (delta): move_and_slide (Vector2 (velocidad, 0)) עובר
func _on_Area2D_body_entered (גוף):
אם body.is_in_group ("Jugador"): body.queue_free (); get_node ("/root/Level1"). vivo = false; אם body.is_in_group ("מסך"): queue_free ();
מרחיב את RigidBody2D
#
func _on_Bala_body_entered (גוף):
אם body.is_in_group ("Enemigo"): body.queue_free (); queue_free (); get_node ("/root/Level1"). נקודה += 5; אם body.is_in_group ("מסך"): queue_free ();
Enemigos: EnemySpawner.gd (EnemySpawner)-> aparición aleatoria de enemigos.
מאריך את הצומת
var אויב = טעינה מוקדמת ("res: //Escena/Enemigo.tscn");
var aparicion = 0.8; ייצוא var aparecer = true;
func _process (delta):
if (aparecer): spawn () aparecer = false; תשואה (get_tree (). create_timer (aparicion), "timeout") aparecer = true; func spawn (): var enemigo = אויב.הקרה (); var pos = Vector2 (); pos.x = 1632; pos.y = rand_range (32, 592); enemigo.set_position (pos); get_node ("מיכל"). add_child (enemigo)
Los nodos Enemigo y bala se encuentran en dos escenas Independientes, que toman su mismo nombre, bala.tscn y enemigo.tscn.
Git con סרטון משחקים:
github.com/jcamiloguzman/ArduPack
שלב 8: אינטגרציה (Control + Videojuego)
Una vez tenemos el correcto funcionamiento de nuestro videojuego y de nuestro control, es hora de realizar la integración de los dos, este es el paso más fácil gracias a la forma en la que está implementado el control, ya que va a simular el teclado de nuestra computadora, para ello debemos conectar el circuito con el código y los sensores montados y funcionando y nuestro juego ejecutandose, en el momento de encender el control, estará buscando un emparejamiento vía Bluetooth, lo que haremos será emparejar y conectarlo con yrarra computer al juego, si todo ha funcionado correctamente se podría disfrutar de ArduPack con su control no convencional.
מכשירי Bluetooth ומכשירי Bluetooth הכוללים את כל המקלדות ESP32 BLE, ומציעים בחירה עצמית ואוטומטית.
ג'וגר!
מוּמלָץ:
כיצד לתקן Arduino שרוף או ESP32: 5 שלבים
כיצד לתקן Arduino או ESP32 שנשרפו: בסרטון זה תלמד כיצד לתקן את Arduino או ESP32 השרוף שלך! זה יכול להביא לך הכנסה כלכלית מצוינת, עם משהו שאתה אוהב לעשות. השתמשתי בשני כלים חדשים והם היו תחנת הלחמה שלדעתי לא עבדה כל כך
תקשורת אלחוטית של LoRa 3 עד 8 קילומטרים עם E32 בעלות נמוכה (sx1278/sx1276) עבור Arduino, Esp8266 או Esp32: 15 שלבים
תקשורת אלחוטית של LoRa 3Km עד 8Km עם E32 בעלות נמוכה (sx1278/sx1276) עבור Arduino, Esp8266 או Esp32: אני יוצר ספרייה לניהול EBYTE E32 המבוססת על סדרת Semtech של מכשיר LoRa, מכשיר חזק מאוד, פשוט וזול. אתה יכול למצוא גרסת 3 ק"מ כאן, גירסת 8 ק"מ כאן הם יכולים לעבוד על מרחק של 3000m עד 8000m, ויש להם הרבה תכונות ו
כיצד לשלוח מיילים עם קבצים מצורפים עם Arduino, Esp32 ו- Esp8266: 6 שלבים
כיצד לשלוח הודעות דוא"ל עם קבצים מצורפים עם Arduino, Esp32 ו- Esp8266: כאן ברצוני להסביר את גרסת 2 של הספרייה שלי EMailSender, התייחסות אבולוציה גדולה לגרסה 1, עם תמיכה בארדואינו עם w5100, w5200 ו- w5500 מגן ethernet ו- enc28J60 התקני שיבוט ותמיכה ב- esp32 ו- esp8266. עכשיו אתה יכול לפרסם
התקנת לוח ESP32 ב- Arduino IDE (Windows, Mac OS X, Linux): 7 שלבים
התקנת לוח ESP32 ב- Arduino IDE (Windows, Mac OS X, Linux): יש תוסף ל- Arduino IDE המאפשר לך לתכנת את ESP32 באמצעות Arduino IDE ושפת התכנות שלו. במדריך זה נראה לך כיצד להתקין את לוח ESP32 ב- Arduino IDE בין אם אתה משתמש ב- Windows, Mac OS X או Li
תחילת העבודה עם ESP32 - התקנת לוחות ESP32 ב- Arduino IDE - קוד מהבהב ESP32: 3 שלבים
תחילת העבודה עם ESP32 | התקנת לוחות ESP32 ב- Arduino IDE | קוד מהבהב ESP32: במדריך זה נראה כיצד להתחיל לעבוד עם esp32 וכיצד להתקין לוחות esp32 ל- Arduino IDE ונתכנת את esp 32 להפעלת קוד מהבהב באמצעות arduino ide