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

+62 -27
View File
@@ -3,59 +3,95 @@
int main()
{
// Crear la ventana
InitWindow(800, 600, "Attacks for Bombs 1");
// Tamaño de la ventana
const int pantallaAncho = 800;
const int pantallaAlto = 600;
// Variables del jugador
float x = 400;
float y = 300;
float tamaño = 50;
float velocidad = 5;
// Crear ventana
InitWindow(
pantallaAncho,
pantallaAlto,
"Attacks for Bombs 1"
);
// 60 cuadros por segundo
// Limitar a 60 FPS
SetTargetFPS(60);
// Bucle principal del juego
// 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())
{
// Movimiento hacia arriba
// 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))
{
y -= velocidad;
x += direccionX * velocidad * deltaTime;
y += direccionY * velocidad * deltaTime;
}
// Movimiento hacia abajo
// Movimiento hacia atrás
if (IsKeyDown(KEY_S))
{
y += velocidad;
x -= direccionX * velocidad * deltaTime;
y -= direccionY * velocidad * deltaTime;
}
// Movimiento hacia la izquierda
if (IsKeyDown(KEY_A))
{
x -= velocidad;
x += direccionY * velocidad * deltaTime;
y -= direccionX * velocidad * deltaTime;
}
// Movimiento hacia la derecha
if (IsKeyDown(KEY_D))
{
x += velocidad;
x -= direccionY * velocidad * deltaTime;
y += direccionX * velocidad * deltaTime;
}
// Obtener la posición del mouse
Vector2 mouse = GetMousePosition();
// Límites de la pantalla
float mitad = tamaño / 2.0f;
// Calcular el ángulo hacia el mouse
float angulo =
atan2(mouse.y - y, mouse.x - x) * RAD2DEG;
if (x < mitad)
x = mitad;
// Empezar a dibujar
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 el cuadrado rojo girado hacia el mouse
// Dibujar jugador
DrawRectanglePro(
{
x,
@@ -64,18 +100,17 @@ int main()
tamaño
},
{
tamaño / 2,
tamaño / 2
mitad,
mitad
},
angulo,
angulo * RAD2DEG,
RED
);
// Terminar de dibujar
EndDrawing();
}
// Cerrar la ventana
// Cerrar ventana
CloseWindow();
return 0;