Movimiento WASD adaptado a la dirección del mouse

This commit is contained in:
Clinv committed 2026-09-26 15:34:32 -03:00
1 parent d74834f0b6
commit 00814b07ad
3 files changed
+179 -27

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
# Disable raylib examples/games and include FetchContent
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(BUILD_GAMES OFF CACHE BOOL "" FORCE)
include(FetchContent)
# Declare and make raylib available
FetchContent_Declare(
raylib
GIT_REPOSITORY "https://github.com/raysan5/raylib.git"
GIT_TAG "master"
GIT_PROGRESS TRUE
)
# 2. Descargar Pugixml (Lector de XML/SVG)
FetchContent_Declare(
pugixml
GIT_REPOSITORY "https://github.com/zeux/pugixml.git"
GIT_TAG "v1.14" # Versión estable
GIT_PROGRESS TRUE
)
# 1. Save the local PLATFORM variable
set(ORIGINAL_PLATFORM "${PLATFORM}")
# 2. Override the local variable to "Desktop" (This shadows the cache and hides "linux" from raylib)
set(PLATFORM "Desktop")
# 3. Configure raylib
FetchContent_MakeAvailable(raylib pugixml)
# 4. Restore your project's local PLATFORM variable back to "linux"
set(PLATFORM "${ORIGINAL_PLATFORM}")
add_exe_module(pacman OUTPUT_NAME "Pacman")
target_link_libraries(pacman PRIVATE raylib pugixml)
+117
View File
@@ -0,0 +1,117 @@
#include "raylib.h"
#include <cmath>
int main()
{
// Tamaño de la ventana
const int pantallaAncho = 800;
const int pantallaAlto = 600;
// Crear ventana
InitWindow(
pantallaAncho,
pantallaAlto,
"Attacks for Bombs 1"
);
// Limitar a 60 FPS
SetTargetFPS(60);
// Posición del jugador
float x = 400.0f;
float y = 300.0f;
// Tamaño del jugador
float tamaño = 50.0f;
// Velocidad del jugador
float velocidad = 300.0f;
while (!WindowShouldClose())
{
// Tiempo que pasó desde el frame anterior
float deltaTime = GetFrameTime();
// Posición del mouse
Vector2 mouse = GetMousePosition();
// Dirección hacia el mouse
float angulo =
atan2(mouse.y - y, mouse.x - x);
float direccionX = cos(angulo);
float direccionY = sin(angulo);
// Movimiento hacia adelante
if (IsKeyDown(KEY_W))
{
x += direccionX * velocidad * deltaTime;
y += direccionY * velocidad * deltaTime;
}
// Movimiento hacia atrás
if (IsKeyDown(KEY_S))
{
x -= direccionX * velocidad * deltaTime;
y -= direccionY * velocidad * deltaTime;
}
// Movimiento hacia la izquierda
if (IsKeyDown(KEY_A))
{
x += direccionY * velocidad * deltaTime;
y -= direccionX * velocidad * deltaTime;
}
// Movimiento hacia la derecha
if (IsKeyDown(KEY_D))
{
x -= direccionY * velocidad * deltaTime;
y += direccionX * velocidad * deltaTime;
}
// Límites de la pantalla
float mitad = tamaño / 2.0f;
if (x < mitad)
x = mitad;
if (x > pantallaAncho - mitad)
x = pantallaAncho - mitad;
if (y < mitad)
y = mitad;
if (y > pantallaAlto - mitad)
y = pantallaAlto - mitad;
// Dibujar
BeginDrawing();
// Fondo blanco
ClearBackground(WHITE);
// Dibujar jugador
DrawRectanglePro(
{
x,
y,
tamaño,
tamaño
},
{
mitad,
mitad
},
angulo * RAD2DEG,
RED
);
EndDrawing();
}
// Cerrar ventana
CloseWindow();
return 0;
}