İçindekiler:
- Gereçler
- Adım 1: Video İnceleme Y Oyun Tasarım Belgesi
- Adım 2: Montaje Del Circuito
- Adım 3: Subir Código Del Funcionamiento Al Arduino
- Adım 4: Creación De Sprites ve Personajes
- Adım 5: Los Sprites a Godot Engine Para La Implementacion Del Vídeo Juego'yu İçe Aktarın
- Adım 6: Disposición De Los Elementos En Pantalla Y Configuración Del Proyecto
- Adım 7: Creación De Los Komut Dosyaları
- Adım 8: Entegrasyon (Kontrol + Videojuego)
Video: Diviértete Con ArduPack (Videojuego2D Godot3 + Arduino ESP32): 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Modelo Prototipo de un VideoJuego que le izinirá al usuario başkaldırmak usand un kontrolü hiçbir konvansiyonel ve para los mas entusiastas de la programa cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl cıvıl.
-Juan Camilo Guzmán-Sebastián Carmona-Juan Diego Bustamante-Jhonatan Rodriguez
Gereçler
WEMOS LOLIN32.
Dos sensörleri 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 ve personajes). Godot (Para la programación del Vídeo Juego).
Kitaplıklar:pySerial (ESP32 için yazılım ve donanım yazılımı para birimi)NewPing_v1.9.1 (sensörlerin kayıp verileriyle uyumlu)blekeyboard (Para comunicar el arduino con el videojuego simulando un teclado)
Adım 1: Video İnceleme Y Oyun Tasarım Belgesi
Oyun Tasarım Belgesi
Adım 2: Montaje Del Circuito
En uygun sensörler ve sensörler Wemos Lolin32 en özel görüntüden yararlanır: Özel ve özel bir görüntüden yararlanır. Usamos en el código, en eski manera se lograra la detección de los movimientos de la mano para mover al personaje ve el ángulo del disparo.
Adım 3: Subir Código Del Funcionamiento Al Arduino
Arduino IDE ve Sketch, kütüphaneyi dahil et,. Zip Kütüphanesini ekle.. buscamos y agregamos la librerías proporcionadas.
YeniPing
BleKlavye
arduino IDE usaremos pyserial ile uyumludur.
-Primero, Python indir, arşivden PIP indir, Python ve escribiremos ve comando get-pip.py, Python escribiremos el comando'dan sonra: Python -m pip kurulumu ve pyserial, Arduino IDE için işlevsellik düzeltmesi
Después subimos el código para el funcionamiento del control, que se encuentra en el arşivo controller.ino.
Este código, en yakın algılayıcıların, yakınlıktaki algılayıcıların ve algılayıcıların, ABD'nin la librería'sının izin vermesine izin verir.
Adım 4: Creación De Sprites ve Personajes
Deberemos usar un creador de sprites libre para poder crear propios personajes, objetos, enemigos vb.
En este caso se uso el creador piskel (https://www.piskelapp.com) para la creación de los enemigos, kişisel olarak kontrol edilebilir, este editörü izinli guardar los sprites como imagenes-p.webp
Adım 5: Los Sprites a Godot Engine Para La Implementacion Del Vídeo Juego'yu İçe Aktarın
Debemos'un en önemli özelliği, video oyunlarının en başında geliyor. Para importar los sprites al juego, añadimos un nodo de sprite ve en son propiedades elegimos como textura la imagen-p.webp
Adım 6: Disposición De Los Elementos En Pantalla Y Configuración Del Proyecto
Tüm öğelerin bir araya gelmesiyle, tüm öğelerin entorno para desarrollar ve videojuego, para agregar un nodo perteneciente a otro (Como el caso del jugador con su sprite y çarpıştırıcısı más su brazo) tıklayın en el nodo y damos click en añadir.
Not: Algunas configuraciones de los nodos son necesarios para el Correcto funcionamiento, como doğrulayıcı que los nodos tienen conectados Correctamente los eventos (En este caso los eventos que implican a la bala, el enemigo y al jugador), Asigner no.: jugador y Enemigo tienen sus grupos con su mismo nombre y LimiteBalas tiene el grupo llamado Ekran, el tamaño de la ventana tr PROYECTO configurar> ajustes de proyecto> ventana bir un 1600x600 y tener en cuenta que algunos nodos deben tener los Mismos nombres que se aprecian en la imagen para poder ser accedidos Correctamente, también podemos definir los kontrolleri que se asignan a la altura ve langulo de disparo del personaje en la ventana Proyecto>ajustes del proyecto > definas de entrada, aquí remos pode por defecto tenemos las flechas (Arriba y abajo para altura y izquierda y derecha para el angulo).
Adım 7: Creación De Los Komut Dosyaları
Kişiselleştirme için komut dosyaları, enemigos, disparos senaryoları, puntaje, enemigos derrotados, sesli ve nihai algılama. Goodot motorunun sunduğu olanaklardan biri de programa dayalı komut dosyalarıdır.
Bir süreklilik se muestran las instancias de todos los scripts de esta manera:
"nombreScript.cs(NombreNodo) -> açıklama"
Birleştirilmiş bir komut dosyası bir un nodo, damos'u tıklayın, daha önce bir kez daha tıklayın, bir başka deyişle, escogemos nombre ve lenguaje para el yazısı.
Komut dosyası para el kontrol del nivel: sonsuz_bg.cs(Level1) -> El movimiento sonsuz fondo, hesap noktası ve belirleyici cuando pierde.
Godot kullanma;Sistem kullanma;
genel sınıf sonsuz_bg: Düğüm
{ genel çift puntaje = 0; public bool vivo = doğru; özel Sprite arka planları = yeni Sprite[5]; özel kayan nokta bg_width = 1598f; özel şamandıra move_speed = 400f; özel kayan nokta min_X = -1300f; // Düğüm sahne ağacına ilk kez girdiğinde çağrılır. public override void _Ready() { for(int i = 1; i < 6; i++){ backgrounds[i-1] = GetNode("Arka Plan" + i); } }
// Her çerçeve çağrılır. 'delta' bir önceki kareden bu yana geçen süredir.
public override void _Process(float delta) { for(int i = 0; i < backgrounds. Length; i++){ Vector2 temp = backgrounds. GetPosition(); temp.x -= move_speed * delta; if(temp.x <= min_X){ temp.x += bg_width * backgrounds. Length; } arka planlar. SetPosition(temp); } if(canlı){ puntaje += 0.01; Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 yükseltme = new Vector2(0, 0); BotonReinicio. Scale = escala; Etiket Puntaje = GetNode("CanvasLayer/puntaje"); Puntaje. Text = Math. Round(puntaje, 0). ToString(); }else{ Area2D BotonReinicio = GetNode ("BotonReinicio"); Vector2 yükseltme = yeni Vector2(1, 1); BotonReinicio. Scale = escala; }
}
}
Reinicio: botonReinicio.gd(botonReinicio) -> Kontrol ve işlev kontrolü.
Area2D'yi genişletir
func _on_Area2D_input_event(görünüm alanı, olay, şekil_idx):
olay InputEventMouseButton ise: event.is_pressed() ise: get_tree().reload_current_scene()
Jugador: jugador.gd(Jugador) -> Controla el movimiento del jugador.
KinematicBody2D'yi genişletir
var hareket = Vector2()
func _ready():
print(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 hareket= move_and_slide(hareket)
Disparo: Disparo_ Brazo.gd(Brazo) -> kontrola el angulo del arma y instancia un nuevo disparo cada cierto tiempo
Area2D'yi genişletir
var bala = preload("res://Escena/bala.tscn");
var disparo = true; dışa aktarma var velocidad = 1000; ihracat var oranı = 0.4;
# Her kareyi çağırdı. 'delta' bir önceki kareden bu yana geçen süredir.
func _process(delta): eğer döndürme_dereceleri > -40: eğer Input.is_action_pressed("ui_left"): döndürme_dereceleri ise += -5 eğer döndürme_dereceleri < 45: Eğer Input.is_action_pressed("ui_right"): döndürme_dereceleri += 5 ise(disparo): var bala_creada = bala.instance(); bala_creada.position = get_global_position(); bala_creada.rotation_degrees = rotasyon_degrees; bala_creada.apply_impulse(Vector2(), Vector2(velocidad, 0).rotated(rotasyon)) get_tree().get_root().add_child(bala_creada); disparo = yanlış; verim(get_tree().create_timer(oran), "zaman aşımı") disparo = true;
Çarpışmalar: enemigo.gd (Enemigo)y bala.gd(Bala) -> doğrulayıcı y aktuar ante una colisión (Enemigo y bala) (Enemigo y jugador).
KinematicBody2D'yi genişletir
#Determina la velocidad del enemigo
var velocidad = -500; func _process(delta): move_and_slide(Vector2(velocidad, 0)) geçiş
func _on_Area2D_body_entered(gövde):
if body.is_in_group("Jugador"): body.queue_free(); get_node("/root/Level1").vivo = false; if body.is_in_group("Ekran"): tail_free();
RigidBody2D'yi genişletir
#
func _on_Bala_body_entered(body):
if body.is_in_group("Enemigo"): body.queue_free(); sıra_ücretsiz(); get_node("/root/Level1").puntaje += 5; if body.is_in_group("Ekran"): tail_free();
Düşmanlar: EnemySpawner.gd(EnemySpawner)-> düşman aleatoria de enemigos.
düğümü genişletir
var düşman = preload("res://Escena/Enemigo.tscn");
var aparicion = 0.8; export var aparecer = true;
işlev_işlemi(delta):
if(aparecer): spawn() aparecer = false; verim(get_tree().create_timer(aparicion), "zaman aşımı") aparecer = true; func spawn(): var enemigo = düşman.instance(); var konum = Vector2(); konum.x = 1632; konum.y = rand_range(32, 592); enemigo.set_position(konum); get_node("konteyner").add_child(enemigo)
Los nodos Enemigo ve bala se encuentran en dos escenas bağımsızlar, que toman su mismo nombre, bala.tscn ve enemigo.tscn.
Git con video oyun terminali:
github.com/jcamiloguzman/ArduPack
Adım 8: Entegrasyon (Kontrol + Videojuego)
Yeni işlevler için yeni yeni video kontrolü, yeni yeni kontrol, entegrasyonla bütünleşme, en basit şekilde gözden geçirme, basit bir şekilde kontrol etme, eş zamanlı kontrol Nuestra Computadora, para ello debemos conectar el devresi con el código ve los sensores montados ve işlev ve nuestro juego ejecutándose, en hızlı ve en iyi kontrol, estará buscando ve Bluetooth, bağımsız cihazlarla bağlantılı bağlantı Al juego, ve yapılacak işler, düzeltmeleri düzeltmeyi ve ArduPack'i kontrol etmeyi geleneksel olmayan bir şekilde kontrol eder.
ESP32 BLE klavyesi, Bluetooth'la ve otomatik olarak değiştirilemez.
Bir jugar!
Önerilen:
Arduino Araba Geri Geri Park Uyarı Sistemi - Adım Adım: 4 Adım
Arduino Araba Geri Geri Park Uyarı Sistemi | Adım Adım: Bu projede Arduino UNO ve HC-SR04 Ultrasonik Sensör kullanarak basit bir Arduino Araba Geri Park Sensörü Devresi tasarlayacağım. Bu Arduino tabanlı Araba Ters uyarı sistemi, Otonom Navigasyon, Robot Mesafesi ve diğer menzil r
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)
Arduino Kullanan RC Paletli Robot - Adım Adım: 3 Adım
Arduino Kullanan RC Paletli Robot – Adım Adım: Merhaba arkadaşlar, BangGood'tan başka bir harika Robot kasasıyla geri döndüm. Spinel Crux V1 – Hareket Kontrollü Robot, Spinel Crux L2 – Robotik Kollu Arduino Al ve Yerleştir Robotu ve The Badland Braw
ESP32'ye Başlarken - Arduino IDE'de ESP32 Kartlarının Kurulması - ESP32 Yanıp Sönme Kodu: 3 Adım
ESP32'ye Başlarken | Arduino IDE'de ESP32 Kartlarının Kurulması | ESP32 Yanıp Sönme Kodu: Bu talimatta, esp32 ile çalışmaya nasıl başlayacağımızı ve esp32 kartlarının Arduino IDE'ye nasıl kurulacağını göreceğiz ve esp 32'yi arduino ide kullanarak yanıp sönme kodunu çalıştıracak şekilde programlayacağız
DIY Arduino Robotik Kol, Adım Adım: 9 Adım
Kendin Yap Arduino Robot Kol, Adım Adım: Bu eğitim size kendi başınıza bir Robot Kolunu nasıl oluşturacağınızı öğretiyor