From 46796d8af632652fff74f4bef5eee818ead4fa2e Mon Sep 17 00:00:00 2001 From: huaqo-games Date: Thu, 6 Nov 2025 15:46:30 +0100 Subject: [PATCH] fix: proper update position for birds --- include/appTypes.h | 2 ++ src/appGameBirds.c | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/appTypes.h b/include/appTypes.h index b32f577..485838a 100644 --- a/include/appTypes.h +++ b/include/appTypes.h @@ -156,6 +156,8 @@ typedef struct { Sprite sprite; Animation animation; Physics physics; + bool arrived; + Vector2 destPos; } Birds; typedef struct { diff --git a/src/appGameBirds.c b/src/appGameBirds.c index 81a79f9..dc0dbfe 100644 --- a/src/appGameBirds.c +++ b/src/appGameBirds.c @@ -43,13 +43,25 @@ Birds CreateBirds(void){ return (Birds){ .sprite = birdSprite, .animation = birdsAnimation, - .physics = birdsPhysics + .physics = birdsPhysics, + .arrived = true, + .destPos = {0.0f, 0.0f} }; } void UpdateBirds(Birds *birds){ Camera2D *camera = GetCamera(); - Vector2 dir = GetDirectionBetweenTwoVectors(birds->physics.position, camera->target); + Rectangle cameraRec = GetCameraRectangle(); + if(birds->arrived) + { + birds->destPos = GetPositionOutsideRectangle(cameraRec, 1, 100); + birds->arrived = false; + } + if(CheckCollisionPointCircle(birds->physics.position, birds->destPos, 10.0F)) + { + birds->arrived = true; + } + Vector2 dir = GetDirectionBetweenTwoVectors(birds->physics.position, birds->destPos); UpdatePhysics(&birds->physics, dir); printf("birdsPos: %f, %f", birds->physics.position.x, birds->physics.position.y); printf("cameraTarget: %f, %f",camera->target.x, camera->target.y );