Orodha ya maudhui:

Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32): Hatua 8
Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32): Hatua 8

Video: Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32): Hatua 8

Video: Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32): Hatua 8
Video: Топ 10 лучших игр SEGA [Mega Drive, Genesis] 2024, Julai
Anonim
Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32)
Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32)

Modeli Prototipo de un VideoJuego que le permitirá al usuario divertirse usando un control no convencional y para los mas entusiastas de la programación darles un punto de partida con la assistidad de los elementos software libres en los que fue desarrollado ArduPack.

-Juan Camilo Guzmán-Sebastián Carmona-Juan Diego Bustamante-Jhonatan Rodriguez

Vifaa

WEMOS LOLIN 32.

Dos sensores HC SR 04.

Pantalla LED 1920x1080, 24, 24MK430H.

Altavoces 2.2W, 3, 5 mm, logitech S120.

IDE ya Arduino (Para el funcionamiento del control)

Piskel (Para los sprites y personajes). Mungu (Para la programación del Vídeo Juego).

Librerias: pySerial (Para programar el firmware de la placa ESP32) NewPing_v1.9.1 (kwa leer los datos de los sensores) blekeyboard (Para comunicar el arduino con el videojuego simulando un teclado)

Hatua ya 1: Ukaguzi wa Video Y Hati ya Kubuni Mchezo

Image
Image

Hii ni njia ya kufanya kazi kwa njia ya kubuni Mchezo Hati ya Ubunifu

Hatua ya 2: Montaje Del Circuito

Subir Código Del Funcionamiento Al Arduino
Subir Código Del Funcionamiento Al Arduino

Tazama maoni yako kuhusu hali ya Wanawake katika Lolin32 kwa sababu ya picha: Utumiaji wa 5v na GND kwa ajili ya chakula, sensa ya simu inaweza kusababisha miti, inaelezea, ambayo inafanya kazi kwa sababu inahusika. usamos en el código, de esta manera se lograra la detección de los movimientos de la mano for mover al personaje y el ángulo del disparo.

Hatua ya 3: Subir Código Del Funcionamiento Al Arduino

Subir Código Del Funcionamiento Al Arduino
Subir Código Del Funcionamiento Al Arduino

Primero debemos añadir las librerías necesarias, al descargarlas deberemos ir al Arduino IDE na en Mchoro, ni pamoja na maktaba, ongeza. Zip Library.. buscamos agregamos la librerías proporcionadas.

NewPing

BleKeyboard

Para poder usar correctamente la placa con arduino IDE usaremos pyserial.

-Primero, descargaremos Python, taratibu za PIP ya chini, tazama ubicaremos na consola Python na maelezo ya com com get-pip.py, posteriormente en una consola nueva de Python escriptiremos el comando: Python -m pip install pyserial, si todo ha funcionado correctamente ya podremos usar la placa con Arduino IDE

Después subimos el código para el funcionamiento del control, ikiwa ni pamoja na udhibiti wa kumbukumbu.ino.

Idara hii inaruhusiwa kwa wahusika wengine kupata huduma, ni tegemezi kwa vifaa vya sensa ya utaftaji, usaidi wa BleKeyboard kwa simular las pulsasiones de arriba, abajo, izquierda na derecha

Hatua ya 4: Creación De Sprites Y Personajes

Creación De Sprites Y Watu
Creación De Sprites Y Watu
Creación De Sprites Y Watu
Creación De Sprites Y Watu
Creación De Sprites Y Watu
Creación De Sprites Y Watu

Deberemos usar un creador de sprites libre para poder crear propios personajes, objetos, enemigos nk.

Kwa sababu hii ni uso wa mkandarasi (https://www.piskelapp.com) kwa ajili ya kuunda orodha ya watu, ambayo inaweza kudhibitiwa, mhariri wa idhini hii anaweza kutekelezwa kama viini-p.webp

Hatua ya 5: Ingiza Los Sprites Injini ya Godot Para La Implementacion Del Vídeo Juego

Importar Los Sprites Injini ya Godot Para La Implementacion Del Vídeo Juego
Importar Los Sprites Injini ya Godot Para La Implementacion Del Vídeo Juego
Importar Los Sprites Injini ya Godot Para La Implementacion Del Vídeo Juego
Importar Los Sprites Injini ya Godot Para La Implementacion Del Vídeo Juego

Hesabu za kuingiza bidhaa kutoka nje zinapatikana kwa mikate kwa ajili ya kuunda video za video. Para importar los sprites al juego, añadimos un nodo de sprite y en sus propiedades elegimos como textura la imagen-p.webp

Hatua ya 6: Disposición De Los Elementos En Pantalla Y Configuración Del Proyecto

Disposición De Los Elementos En Pantalla Y Kusanidi Del Proyecto
Disposición De Los Elementos En Pantalla Y Kusanidi Del Proyecto

De esta manera se agreegan cada uno de los elementos al entorno for 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 bonyeza en el nodo y damos bonyeza en añadir hijo.

Noti: Algunas configuraciones de los nodos son necesarios para el correcto funcionamiento, como verificar que los nodos tienen conectados correctamente of event (En este caso los eventos que implican a la bala, el enemigo y al jugador), Asignarle los grupos correspondientes 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 un un 1600x600, tener en cuenta que algunos nodos deben tener los mismos nombres se aprecian en la imagen para poder ser accedidos correctamente, también podemos definir los controles que seignan a la altura na ángulo de disparo del personaje en la ventana Proyecto> ajustes del proyecto> mapas de entada, aquí podemos definir las teclas que queremos utiliz por defecto tenemos las flechas (Arriba y abajo para altura y izquierda y derecha para el angulo).

Hatua ya 7: Creación De Los Scripts

Creación De Los Hati
Creación De Los Hati
Creación De Los Hati
Creación De Los Hati
Creación De Los Hati
Creación De Los Hati

Tendremos que crear los scripts de movimiento de personaje, enemigos, scripts de disparos, puntaje, enemigos derrotados, audio na la detección del fin del juego. Injini ya Goodot ni programu ya maandishi ya maandishi usando C # o usar su propio lenguaje. GD.

Kuendelea kwa kufanya hivyo kwa sababu ya maandishi ya maandishi haya:

"nombreScript.cs (NombreNodo) -> sasisho"

Kwa agregar un script a un nodo, damos bonyeza derecho sobre él y damos bonyeza en añadir nodo, escogemos nombre y lenguaje para el script.

Maandiko kwa ajili ya kudhibiti del nivel: infinite_bg.cs (Level1) -> El movimiento infinito del fondo, calcium puntaje y determinar cuando pierde.

kutumia Godot, kutumia Mfumo;

darasa la umma infinite_bg: Node

{umma mara mbili puntaje = 0; bool ya umma vivo = kweli; Sprite ya faragha asili = Sprite mpya [5]; kuelea kwa kibinafsi bg_width = 1598f; kuelea kwa kibinafsi kusonga_speed = 400f; kuelea binafsi min_X = -1300f; // Inayoitwa wakati node inapoingia kwenye mti wa eneo kwa mara ya kwanza. kupuuza umma batili _Ready () {for (int i = 1; i <6; i ++) {background [i-1] = GetNode ("Usuli" + i); }}

// Inayoitwa kila fremu. 'delta' ni wakati uliopita tangu fremu iliyopita.

kupuuza umma batili _Utaratibu (kuelea delta) {kwa (int i = 0; i <asili. Urefu; i ++) {Vector2 temp = asili . GetPosition (); temp.x - = songa_kipya * delta; ikiwa (temp.x <= min_X) {temp.x + = bg_width * asili. Urefu; } asili . SetPosition (temp); } ikiwa (vivo) {puntaje + = 0.01; Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = Vector2 mpya (0, 0); BotonReinicio. Scale = escala; Lebo Puntaje = GetNode ("CanvasLayer / puntaje"); Puntaje. Text = Math. Mzunguko (puntaje, 0). ToString (); } mwingine {Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = Vector2 mpya (1, 1); BotonReinicio. Scale = escala; }

}

}

Reinicio: botonReinicio.gd (botonReinicio) -> Controla el funcionamiento del botón para volver a empezar.

inaongeza Area2D

func _on_Area2D_input_event (bandari ya kutazama, tukio, sura_idx):

ikiwa tukio ni InputEventMouseButton: ikiwa event.is_pressed (): get_tree (). reload_current_scene ()

Jugador: jugador.gd (Jugador) -> Controla el movimiento del jugador.

inaongeza KinematicBody2D

mwendo wa var = Vector2 ()

func _ tayari ():

chapisha (self.get_path ()); func _physics_process (delta): ikiwa (nafasi.y = 570): mwendo.y = -150 mwingine: ikiwa (Input.is_action_pressed ("ui_up")): motion.y + = -20 mwingine: ikiwa (Input.is_action_pressed ("ui_down")): mwendo.y + = mwendo 20 = hoja_na_slide (mwendo)

Disparo: Disparo_ Brazo.gd (Brazo) -> udhibiti wa angulo del arma y instancia un nuevo disparo cada cierto tiempo

inaongeza Area2D

var bala = preload ("res: //Escena/bala.tscn");

var disparo = kweli; kuuza nje var velocidad = 1000; usafirishaji var var = 0.4;

# Inaitwa kila fremu. 'delta' ni wakati uliopita tangu fremu iliyopita.

mchakato wa func (delta): ikiwa digrii_ za kuzunguka> -40: ikiwa Input.is_action_pressed ("ui_left"): rotation_degrees + = -5 ikiwa digrii_ za kuzunguka <45: ikiwa Input.is_action_pressed ("ui_right"): rotation_degrees + = 5 if (disparo): var bala_creada = bala.instance (); bala_creada.position = pata_pasi_position [); bala_creada.rotation_degrees = digrii_ za kuzungusha; bala_creada.apply_impulse (Vector2 (), Vector2 (velocidad, 0). iliyopigwa (kuzungushwa)) pata_tree (). pata_root (). add_child (bala_creada); disparo = uongo; mavuno (get_tree (). create_timer (ratio), "timeout") disparo = kweli;

Colisiones: enemigo.gd (Enemigo) y bala.gd (Bala) -> verificar y actuar ante una colisión (Enemigo y bala) (Enemigo y jugador).

inaongeza KinematicBody2D

#Determina la velocidad del enemigo

var velocidad = -500; mchakato wa func (delta): hoja_na_slide (Vector2 (velocidad, 0)) kupita

func _on_Area2D_body_entered (mwili):

ikiwa body.is_in_group ("Jugador"): body.queue_free (); pata_node ("/ mzizi / Kiwango1"). vivo = uwongo; ikiwa body.is_in_group ("Screen"): foleni_ya bure ();

inaongeza RigidBody2D

#

func _on_Bala_body_entered (mwili):

ikiwa body.is_in_group ("Enemigo"): body.queue_free (); foleni_ya bure (); pata_node ("/ root / Level1"). puntaje + = 5; ikiwa body.is_in_group ("Screen"): foleni_ya bure ();

Maana ya jina: EnemySpawner.gd (EnemySpawner) -> aparición aleatoria de enemigos.

inaongeza Node

var adui = preload ("res: //Escena/Enemigo.tscn");

var aparicion = 0.8; kuuza nje var aparecer = kweli;

mchakato wa func (delta):

ikiwa (aparecer): spawn () aparecer = uwongo; mavuno (get_tree (). create_timer (aparicion), "timeout") aparecer = kweli; func spawn (): var enemigo = adui.instance (); var pos = Vector2 (); pos.x = 1632; pos.y = rand_range (32, 592); nafasi ya enemigo.set_position (pos); pata_node ("kontena"). nyongeza mtoto (enemigo)

Los nodos Enemigo y bala se encuentran en dos escenas independientes, que toman su mismo nombre, bala.tscn y enemigo.tscn.

Git con video juego terminado:

github.com/jcamiloguzman/ArduPack

Hatua ya 8: Jumuishi (Udhibiti + Videojuego)

Ujumuishaji (Udhibiti + Videojuego)
Ujumuishaji (Udhibiti + Videojuego)
Ujumuishaji (Udhibiti + Videojuego)
Ujumuishaji (Udhibiti + Videojuego)
Ujumuishaji (Udhibiti + Videojuego)
Ujumuishaji (Udhibiti + Videojuego)

Una vipaji kumi na viwili vya kujifurahisha video kujishughulisha na udhibiti wa nuestro, kwa sababu ya kutambuliwa kwa uunganisho wa watu, hatua hii itatekelezwa kwa utaratibu wa kudhibiti, kwa mfano wa taswira moja. nuestra computadora, para ello debemos conectar el circo 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 en cone cone alue, not todo ha funcionado correctamente se podría disfrutar de ArduPack con su control no convencional.

Agregamos un nuevo dispositivo Bluetooth y lo buscamos con el nombre de ESP32 BLE keyboard, una vez seleccionado debería emparejarse na conectarse automáticamente.

Mtungi!

Ilipendekeza: