Movimiento WASD adaptado a la dirección del mouse
This commit is contained in:
1 parent
d74834f0b6
commit
00814b07ad
3 files changed
+179
-27
No files matched your search
@@ -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)
|
||||
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user