summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosyid Haryadi <rosyid_haryadi@protonmail.com>2023-12-25 22:56:20 +0700
committerRosyid Haryadi <rosyid_haryadi@protonmail.com>2023-12-25 22:56:20 +0700
commit6f0496835d1e65b2ee1f1ca9b7d43c4b8894b4ba (patch)
tree3b95204cd306a705e3fe996b459d9f58224044ad
parent00f129fc21f94293e2b2f9aaff417fddf3363cae (diff)
test heading vector
-rw-r--r--src/main.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index 96d6a4a..d8b4a4d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -29,6 +29,7 @@ typedef struct Object {
float radius;
Color color;
float headingAngle;
+ float distanceTraveled;
} Object;
void doDrawing(Object *object);
@@ -38,10 +39,11 @@ int main(void)
{
doInitialization();
Object object = {
- .pos = (Vector2) {0, 0},
+ .pos = (Vector2) {100, 0},
.radius = 20.0f,
.color = BLUE,
- .headingAngle = 90
+ .headingAngle = 90,
+ .distanceTraveled = 0
};
while (!WindowShouldClose())
@@ -86,6 +88,17 @@ Vector2 angle2HeadingVector(float angle) {
void doUpdate(Object *object) {
float dt = GetFrameTime();
+ float speed = 200.0f;
+ if (object->distanceTraveled <= 50) {
+ float nextPosDistance = speed * dt;
+ object->distanceTraveled += nextPosDistance;
+ Vector2 headingVector = angle2HeadingVector(object->headingAngle);
+ Vector2 nextPos = Vector2Add(Vector2Scale(headingVector, nextPosDistance), object->pos);
+ object->pos = nextPos;
+ } else {
+ object->headingAngle = fmodf(object->headingAngle + 15, 360.0f);
+ object->distanceTraveled = 0;
+ }
}
void doDrawing(Object *object) {