Мазмуну:

Бөлүштүрүү ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 кадам
Бөлүштүрүү ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 кадам

Video: Бөлүштүрүү ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 кадам

Video: Бөлүштүрүү ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 кадам
Video: Игра на разрушение, в которой динозавры бушуют в Рио! 🏢🦖 - Rio Rex 4K60FPS GamePlay 🎮📱 2024, Июль
Anonim
Бөлүштүрүү ArduPack (Videojuego2D Godot3 + Arduino ESP32)
Бөлүштүрүү ArduPack (Videojuego2D Godot3 + Arduino ESP32)

Video Protectipo de unVideoJuego que lue de la lérirár a usuario divertirse usando un unvencional y para mas los mas entusiastas de la programación darles un un punto de partida con la facilidad de los elementos software libres en los que fue desarrollado ArduPack.

-Хуан Камило Гузман-Себастьян Кармона-Хуан Диего Бустаманте-Жонатан Родригес

Жабдуулар

WEMOS LOLIN 32.

HC SR 04.

Pantalla LED 1920x1080, 24, 24MK430H.

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

Arduino IDE (көзөмөлдөө функциялары)

Piskel (Para los sprites y personajes). Годот (Para la programación del Vídeo Juego).

Китепканалар: pySerial (ESP32 программалык камсыздоосу) NewPing_v1.9.1 (los data los datos de los sensors) blekeyboard (комментарийлер жана видео материалдар)

1 -кадам: Video Review Y Оюн Документи

Image
Image

Оюн дизайнынын документи

2 -кадам: Montaje Del Circuito

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

Wemos Lolin32 комментарийлерине жазылгыла: Atilecamos 5v y el GND para la alimentación, cada sensor posee dos pines, uno echo y un trigger, estos pueden ser cualesquiera pero en la imagen especificamos los que. Колдонуу шарттары жана эрежелери, ошондой эле жеке менчикти аныктоо.

3 -кадам: Subir Código Del Funcionamiento Al Arduino

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

Китепкана китептерин камтыйт, китепкана кирет,. Zip Китепкана кошуу.. buscamos жана agregamos la librerías proporcionadas.

NewPing

BleKeyboard

Түзөтүү IDE usaremos pyserial үчүн туура эмес.

-Python программасын жүктөп алыңыз, PIPти архивге жүктөңүз, бул жерде Python консолу жана Python консолдорунун бири болуп саналат, ал эми экинчиси: Python -m пип орнотуу үчүн Python -m пип орнотуу. Arduino IDE программасын оңдоп -түздөө

Después subimos el código para el funcionamiento del control, que en encuentra en el archivo controller.ino.

Сенсорлор да, сенсорлор да, сенсорлор да, сенсорлор да, BleKeyboard үчүн симуляторлор да, ариба, абажо, изкуьерда жана дереча да.

4 -кадам: 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

Колдонуу шарттары Купуялуулук cаясаты, колдонуучулар, диалогдор ж.

Колдонуу шарттары бузулган учурда (https://www.piskelapp.com), сиз элестете аласыз, көзөмөлдөнө турган жеке редактор,-p.webp

5 -кадам: Лос -Спрайтты импорттоо Godot Engine менен иштөө Del Vídeo Juego

Импорттоо Лос -Спрайтс Godot Engine менен иштөө үчүн Del Vídeo Juego
Импорттоо Лос -Спрайтс Godot Engine менен иштөө үчүн Del Vídeo Juego
Импорттоо Лос -Спрайтс, Godot Engine менен иштөө, Del Vídeo Juego
Импорттоо Лос -Спрайтс, Godot Engine менен иштөө, Del Vídeo Juego

Төмөнкү видеолорду жүктөө үчүн сиз бул программаны алдыңкы планга киргизе аласыз. Төмөнкү приборлордун жардамы менен: спрайттар, спецификалар жана спектаклдер, текст плагиндер, персонаждар, клизма, фондо ж.

6 -кадам: De Los Elementos En Pantalla Y Configuración Del Proyecto

Дос Лос Элементос Дан Профайл Конфигурация Дел Проякто
Дос Лос Элементос Дан Профайл Конфигурация Дел Проякто

De esta manera se agregan cada uno de los elementos al entorno para desarrollar el videojuego, para agregar un nodo perteneciente a otro (Como el caso del jugador con sprite y collider más su brazo) damos click en el nodo y damos click en añadir hijo..

Эскертүү: Algunas configuraciones de los nodos sones туура эмес функциялар, комо verificar que los nodos tienen conectados correctamente los eventos (En este caso los eventos que que implican a la bala, el enemigo y al jugador), asignarle los grupos: Экранды конфигурациялоо - бул экрандын конфигурациясы, ал эми 1600x600 өлчөмүндөгү экранды конфигурациялоо керек. aprecian en la imagen para comperer accedidos correctamente, tambyén podemos definitos los controles que seignan a la altura y ángulo de disparo del personaje en la ventana Proyecto> ajustes del proyecto> mapas de entrada, aquip podemos definitos las utlasar quaremos, defecto tenemos las flechas (Arriba y abajo para altura y izquierda y derecha para ang angulo).

7 -кадам: Creación De Los Scripts

Creación De Los Script
Creación De Los Script
Creación De Los Script
Creación De Los Script
Creación De Los Script
Creación De Los Script

Tendremos que crear los scripts de movimiento de personaje, enigigos, scripts de disparos, puntaje, enemigos derrotados, audio y la detección del fin del juego. Goodot кыймылдаткычы дагы программалык камсыздоонун сценарийлери менен иштейт.

Сценарийлердин эстутуму боюнча тынымсыз иштөө:

"nombreScript.cs (NombreNodo) -> descripción"

Сценарий боюнча эч кандай шарт жок болсо, анда бул баскычты чыкылдатыңыз, эскогемо номериңизди басыңыз.

Сценарийлер көзөмөлдөө үчүн: infinite_bg.cs (Даража 1) -> Кыймылсыз абалга келүү, эсеп -кысапты аныктоо.

Годотту колдонуу; Системаны колдонуу;

коомдук класс infinite_bg: Node

{public double puntaje = 0; public bool vivo = true; жеке Sprite өбөлгөлөрү = жаңы Sprite [5]; жеке калкыма bg_width = 1598f; жеке float move_speed = 400f; жеке калкыма min_X = -1300f; // Түйүн сахна дарагына биринчи жолу киргенде чакырылган. public override void _Ready () {for (int i = 1; i <6; i ++) {backgrounds [i-1] = GetNode ("Фон"+i); }}

// Ар бир кадрга чалуу. "дельта" - бул мурунку алкактан бери өткөн убакыт.

public override void _Process (float delta) {for (int i = 0; i <backgrounds. Length; i ++) {Vector2 temp = backgrounds . GetPosition (); temp.x -= move_speed * дельта; if (temp.x <= min_X) {temp.x += bg_width * backgrounds. Length; } backgrounds . SetPosition (temp); } if (vivo) {puntaje += 0.01; Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = жаңы Vector2 (0, 0); BotonReinicio. Scale = escala; Puntaje Label = GetNode ("CanvasLayer/puntaje"); Puntaje. Text = Math. Round (puntaje, 0). ToString (); } else {Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 escala = жаңы Vector2 (1, 1); BotonReinicio. Scale = escala; }

}

}

Реинисио: botonReinicio.gd (botonReinicio) -> Контролдоо жана функцияларды ишке ашыруу.

Area2D кеңейтет

func _on_Area2D_input_event (көрүү терезеси, окуя, Figure_idx):

эгер окуя InputEventMouseButton: if event.is_pressed (): get_tree (). reload_current_scene ()

Jugador: jugador.gd (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 кыймыл = move_and_slide (кыймыл)

Диспаро: Disparo_ Brazo.gd (Brazo) -> инструменттердин жардамы менен инструменттерди иштетүү керек

Area2D кеңейтет

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

var disparo = true; export var velocidad = 1000; export var ratio = 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 = айлануу_деграмалары; bala_creada.apply_impulse (Vector2 (), Vector2 (velocidad, 0).ототация (айлануу)) get_tree (). get_root (). add_child (bala_creada); диспаро = жалган; кирешелүүлүк (get_tree (). create_timer (катыш), "күтүү убактысы") disparo = true;

Коллизиялар: enemigo.gd (Enemigo) y bala.gd (Bala) -> актуалдуу активдүүлүк (Enemigo y бала) (Enemigo y jugador).

KinematicBody2D кеңейтет

#Determina la velocidad del enemigo

var velocidad = -500; func _process (delta): move_and_slide (Vector2 (velocidad, 0)) өтүү

func _on_Area2D_body_entered (body):

if 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):

if body.is_in_group ("Enemigo"): body.queue_free (); queue_free (); get_node ("/root/Level1"). puntaje += 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; export var aparecer = true;

func _process (дельта):

if (aparecer): spawn () aparecer = false; кирешелүүлүк (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 (пос); get_node ("контейнер"). add_child (enemigo)

Эң башкысы, көз карандысыздык, эң башкысы, эң башкысы, эң башкысы.

Git Con Video Жыйынтыктары:

github.com/jcamiloguzman/ArduPack

8 -кадам: Integración (Control + Videojuego)

Integración (Control + Videojuego)
Integración (Control + Videojuego)
Integración (Control + Videojuego)
Integración (Control + Videojuego)
Integración (Control + Videojuego)
Integración (Control + Videojuego)

Туура эмес функциялар видео көзөмөлдөө функциясын көзөмөлдөө, ошондой эле интеграциялоону ишке ашыруу, ошондой эле эң башкысы, бул функцияларды көзөмөлдөө, же эң символдуу эл аралык текшерүү. nuestra computadora, para ello debemos conectar el el código y los sensors montados funcionando y nuestro juego ejecutándose, en el momento de encender el elute, bancar un un emparejamiento vía Bluetooth, que que haremo conestar comparate comparear Жөнөкөй сөз менен айтканда, ArduPack контролдоо конвенциялуу эмес, жөндөлгөн жок.

Бул жерде ESP32 BLE клавиатурасы жана Bluetooth автоматтык түрдө автоматтык түрдө жабдылган.

Жугар!

Сунушталууда: