From 9f567e6ee40e2f57628ddae7bf798f87d8d61fda Mon Sep 17 00:00:00 2001 From: David Buzatto Date: Sat, 29 Nov 2025 14:11:15 -0300 Subject: [PATCH] Example for creating balls with simple physics simulation (#5372) * Example for creating balls with simple physics simulation The goal of this example is to create several colored balls whose movement is simulated and which respond to the action of being grabbed and dragged using the mouse. * renaming example renaming example from physics_bouncing_balls to shapes_ball_physics --- examples/shapes/shapes_ball_physics.c | 222 ++++++++++++++++++++++++ examples/shapes/shapes_ball_physics.png | Bin 0 -> 43216 bytes 2 files changed, 222 insertions(+) create mode 100644 examples/shapes/shapes_ball_physics.c create mode 100644 examples/shapes/shapes_ball_physics.png diff --git a/examples/shapes/shapes_ball_physics.c b/examples/shapes/shapes_ball_physics.c new file mode 100644 index 000000000..1c41d5f1a --- /dev/null +++ b/examples/shapes/shapes_ball_physics.c @@ -0,0 +1,222 @@ +/******************************************************************************************* +* +* raylib [shapes] example - physics bouncing balls +* +* Example complexity rating: [★★☆☆] 2/4 +* +* Example originally created with raylib 5.5 +* +* Example contributed by David Buzatto (@davidbuzatto) and reviewed by Ramon Santamaria (@raysan5) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2025 David Buzatto (@davidbuzatto) +* +********************************************************************************************/ + +#include +#include +#include "raylib.h" + +#define MAX_BALLS 5000 // Maximum quantity of balls + +typedef struct Ball { + Vector2 pos; // Position + Vector2 vel; // Velocity + Vector2 ppos; // Previous position + float radius; + float friction; + float elasticity; + Color color; + bool grabbed; +} Ball; + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - physics bouncing balls"); + + Ball balls[MAX_BALLS] = {{ + .pos = {GetScreenWidth()/2, GetScreenHeight()/2}, + .vel = {200, 200}, + .ppos = {0}, + .radius = 40, + .friction = 0.99, + .elasticity = 0.9, + .color = BLUE, + .grabbed = false + }}; + + int ballQuantity = 1; + Ball *grabbedBall = NULL; // A pointer to the current ball that is grabbed + Vector2 pressOffset = {0}; // Mouse press offset relative to the ball that grabbedd + + float gravity = 100; // World gravity + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //--------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + float delta = GetFrameTime(); + Vector2 mousePos = GetMousePosition(); + + // Checks if a ball was grabbed + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) + { + for (int i = ballQuantity - 1; i >= 0; i--) { + + Ball *ball = &balls[i]; + pressOffset.x = mousePos.x - ball->pos.x; + pressOffset.y = mousePos.y - ball->pos.y; + + // If the distance between the ball position and the mouse press position + // is less or equal the ball radius, the event occured inside the ball + if (hypot(pressOffset.x, pressOffset.y) <= ball->radius) + { + ball->grabbed = true; + grabbedBall = ball; + break; + } + + } + } + + // Releases any ball the was grabbed + if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) + { + if (grabbedBall != NULL) + { + grabbedBall->grabbed = false; + grabbedBall = NULL; + } + } + + // Creates a new ball + if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT) || (IsKeyDown(KEY_LEFT_CONTROL) && IsMouseButtonDown(MOUSE_BUTTON_RIGHT))) { + if (ballQuantity < MAX_BALLS) { + balls[ballQuantity++] = (Ball) { + .pos = mousePos, + .vel = {GetRandomValue(-300, 300), GetRandomValue(-300, 300)}, + .ppos = {0}, + .radius = 20 + GetRandomValue(0, 30), + .friction = 0.99, + .elasticity = 0.9, + .color = {GetRandomValue(0, 255), GetRandomValue(0, 255), GetRandomValue(0, 255), 255}, + .grabbed = false + }; + } + } + + // Shake balls + if (IsMouseButtonPressed(MOUSE_BUTTON_MIDDLE)) { + for (int i = 0; i < ballQuantity; i++) { + Ball *ball = &balls[i]; + if (!ball->grabbed) { + ball->vel = (Vector2) {GetRandomValue(-2000, 2000), GetRandomValue(-2000, 2000)}; + } + } + } + + // Changes gravity + gravity += GetMouseWheelMove() * 5; + + // Updates each ball state + for (int i = 0; i < ballQuantity; i++) { + + Ball *ball = &balls[i]; + + // The ball is not grabbed + if (!ball->grabbed) + { + // Ball repositioning using the velocity + ball->pos.x += ball->vel.x * delta; + ball->pos.y += ball->vel.y * delta; + + // Does the ball hit the screen right boundary? + if (ball->pos.x + ball->radius >= screenWidth) + { + ball->pos.x = screenWidth - ball->radius; // Ball repositioning + ball->vel.x = -ball->vel.x * ball->elasticity; // Elasticity makes the ball lose 10% of its velocity on hit + } + // Does the ball hit the screen left boundary? + else if (ball->pos.x - ball->radius <= 0) + { + ball->pos.x = ball->radius; + ball->vel.x = -ball->vel.x * ball->elasticity; + } + + // The same for y axis + if (ball->pos.y + ball->radius >= screenHeight) + { + ball->pos.y = screenHeight - ball->radius; + ball->vel.y = -ball->vel.y * ball->elasticity; + } + else if (ball->pos.y - ball->radius <= 0) + { + ball->pos.y = ball->radius; + ball->vel.y = -ball->vel.y * ball->elasticity; + } + + // Friction makes the ball lose 1% of its velocity each frame + ball->vel.x = ball->vel.x * ball->friction; + // Gravity affects only the y axis + ball->vel.y = ball->vel.y * ball->friction + gravity; + + } + else + { + // Ball repositioning using the mouse position + ball->pos.x = mousePos.x - pressOffset.x; + ball->pos.y = mousePos.y - pressOffset.y; + // While the ball is grabbed, recalculates its velocity + ball->vel.x = (ball->pos.x - ball->ppos.x) / delta; + ball->vel.y = (ball->pos.y - ball->ppos.y) / delta; + ball->ppos = ball->pos; + } + } + + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + for (int i = 0; i < ballQuantity; i++) + { + Ball *ball = &balls[i]; + DrawCircleV(ball->pos, ball->radius, ball->color); + DrawCircleLinesV(ball->pos, ball->radius, BLACK); + } + + DrawText("grab a ball by pressing with the mouse and throw it by releasing", 10, 10, 20, DARKGRAY); + DrawText("right click to create new balls (keep left control pressed to create a lot)", 10, 30, 20, DARKGRAY); + DrawText("use mouse wheel to change gravity", 10, 50, 20, DARKGRAY); + DrawText("middle click to shake", 10, 70, 20, DARKGRAY); + DrawText(TextFormat("ball quantity: %d", ballQuantity), 10, GetScreenHeight() - 55, 20, BLACK); + DrawText(TextFormat("gravity: %.2f", gravity), 10, GetScreenHeight() - 35, 20, BLACK); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_ball_physics.png b/examples/shapes/shapes_ball_physics.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4c86f14d077ebd65f47bb47b078f10f2425a0a GIT binary patch literal 43216 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 Mp00i_>zopr0H