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

+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;
}