update bird position when too far away

This commit is contained in:
huaqo-games
2025-11-11 12:13:01 +01:00
parent ac2e102911
commit e983364523
3 changed files with 13 additions and 2 deletions
+1
View File
@@ -208,6 +208,7 @@ void SwapAndPopObjectsArrayOnPointCollision(ObjectArray *objects, const Vector2
void RenderObjectArray(const ObjectArray *objects);
Vector2 GetDirectionBetweenTwoVectors(Vector2 vec1, Vector2 vec2);
float GetDistanceBetweenTwoVectors(Vector2 vec1, Vector2 vec2);
void UpdatePhysicsDirection(Vector2 *direction, Vector2 vector);
void UpdatePhysicsVelocity(Vector2 *velocity, Vector2 *direction, float *speed);
void UpdatePhysicsPosition(Vector2 *position, Vector2 *velocity);
+5 -2
View File
@@ -37,7 +37,7 @@ Birds CreateBirds(void){
Rectangle cameraRec = GetCameraRectangle();
birds.physics[i] = (Physics){
.position = GetPositionOutsideRectangle(cameraRec, 1, 100),
.position = GetPositionOutsideRectangle(cameraRec, 100, 1000),
.direction = (Vector2){0.0f, 0.0f},
.speed = 5.0f
};
@@ -58,13 +58,16 @@ void UpdateBirds(Birds *birds){
{
if(birds->arrived[i])
{
birds->destPos[i] = GetPositionOutsideRectangle(cameraRec, 1, 100);
birds->destPos[i] = GetPositionOutsideRectangle(cameraRec, 100, 1000);
birds->arrived[i] = false;
}
if(CheckCollisionPointCircle(birds->physics[i].position, birds->destPos[i], 10.0F))
{
birds->arrived[i] = true;
}
if(GetDistanceBetweenTwoVectors(birds->physics[i].position, camera->target) > 1000){
birds->physics[i].position = GetPositionOutsideRectangle(cameraRec, 100, 1000);
}
Vector2 dir = GetDirectionBetweenTwoVectors(birds->physics[i].position, birds->destPos[i]);
UpdatePhysics(&birds->physics[i], dir);
printf("birdsPos: %f, %f", birds->physics[i].position.x, birds->physics[i].position.y);
+7
View File
@@ -7,6 +7,13 @@ Vector2 GetDirectionBetweenTwoVectors(Vector2 vec1, Vector2 vec2)
return dir;
}
float GetDistanceBetweenTwoVectors(Vector2 vec1, Vector2 vec2)
{
float dx = vec1.x - vec2.x;
float dy = vec1.y - vec2.y;
return sqrtf(dx * dx + dy * dy);
}
void UpdatePhysicsDirection(Vector2 *direction, Vector2 vector)
{
*direction = Vector2Normalize(vector);