Мазмуну:
- Жабдуулар
- 1 -кадам: Video Review Y Оюн Документи
- 2 -кадам: Montaje Del Circuito
- 3 -кадам: Subir Código Del Funcionamiento Al Arduino
- 4 -кадам: Creación De Sprites Y Personajes
- 5 -кадам: Лос -Спрайтты импорттоо Godot Engine менен иштөө Del Vídeo Juego
- 6 -кадам: De Los Elementos En Pantalla Y Configuración Del Proyecto
- 7 -кадам: Creación De Los Scripts
- 8 -кадам: Integración (Control + Videojuego)
Video: Бөлүштүрүү ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
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 Оюн Документи
Оюн дизайнынын документи
2 -кадам: Montaje Del Circuito
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
Китепкана китептерин камтыйт, китепкана кирет,. 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
Колдонуу шарттары Купуялуулук cаясаты, колдонуучулар, диалогдор ж.
Колдонуу шарттары бузулган учурда (https://www.piskelapp.com), сиз элестете аласыз, көзөмөлдөнө турган жеке редактор,-p.webp
5 -кадам: Лос -Спрайтты импорттоо 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
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)
Туура эмес функциялар видео көзөмөлдөө функциясын көзөмөлдөө, ошондой эле интеграциялоону ишке ашыруу, ошондой эле эң башкысы, бул функцияларды көзөмөлдөө, же эң символдуу эл аралык текшерүү. 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 автоматтык түрдө автоматтык түрдө жабдылган.
Жугар!
Сунушталууда:
LoRa 3Km - 8Km Wireless Communication with Low Cost E32 (sx1278/sx1276) Arduino, Esp8266 же Esp32 үчүн түзмөк: 15 кадам
LoRa 3Km - 8Km Wireless Communication with Low Cost E32 (sx1278/sx1276) Arduino, Esp8266 or Esp32 үчүн түзүлүш: Мен EBYTE E32ди башкаруу үчүн китепкана түзөм, ал жерде LoTa түзмөгүнүн Semtech сериясына негизделген, абдан күчтүү, жөнөкөй жана арзан түзмөк. Бул жерде 3Km версиясы, 8Km версиясыАлар 3000мден 8000мге чейинки аралыкта иштей алышат жана алардын көптөгөн функциялары бар
Digital Slot Car Power бөлүштүрүү: 9 кадам (Сүрөттөр менен)
Digital Slot Car Power бөлүштүрүү: Эч качан өзүңүзгө чоң слоттун макетин түзүп, машиналар бирдей иштебей турганын көрдүңүз беле? Же муундарыңыз начар болгондуктан унаалар токтоп, жарышыңыз үзгүлтүккө учураса, сиз аны жек көрөсүзбү? Бул Инструкция сизге кантип ге
Акустикалык левитация Arduino Uno менен кадам-кадам (8-кадам): 8 кадам
Акустикалык левитация менен Arduino Uno Step-by-Step (8-кадам): ультрадыбыштуу үн өткөргүчтөр L298N Dc аял адаптеринин электр энергиясы менен камсыздоосу эркек токту Arduino UNOBreadboard Бул кантип иштейт: Биринчиден, сиз Arduino Uno кодун жүктөп бересиз (бул санарип менен жабдылган микроконтроллер) жана аналогдук порттор кодду айландыруу үчүн (C ++)
ESP32 менен баштоо - Arduino IDEде ESP32 такталарын орнотуу - ESP32 Blink Code: 3 кадам
ESP32 менен баштоо | Arduino IDEде ESP32 такталарын орнотуу | ESP32 Blink Code: Бул көрсөтмөлөрдө биз esp32 менен иштөөнү жана esp32 такталарын Arduino IDEге кантип орнотууну көрөбүз жана esp 32ди arduino ide аркылуу blink кодун иштетүү үчүн программалайбыз
Күнгө негизделген электр станциясынын электр энергиясын алыстан көзөмөлдөө жана бөлүштүрүү системасы: 10 кадам
Күнгө негизделген электр станциясынын электр энергиясын алыстан көзөмөлдөө жана бөлүштүрүү системасы: Бул долбоордун максаты - энергия системаларындагы (күн энергиясы системалары) энергияны көзөмөлдөө жана бөлүштүрүү. Бул системанын дизайны абстракттуу түрдө төмөнкүчө түшүндүрүлөт. Системада болжол менен 2 күн панели бар бир нече тармактар бар