trying to get the Boid to arrive
This commit is contained in:
parent
b118508ea6
commit
88f893e933
24
boids.odin
24
boids.odin
@ -77,15 +77,30 @@ player_input :: proc(using s: ^GameState) {
|
||||
}
|
||||
|
||||
update :: proc(using s: ^GameState) {
|
||||
max_speed :f32 = 15
|
||||
if fpoint, ok := follow_point.?; ok {
|
||||
for &boid in boids {
|
||||
dist := rl.Vector2LengthSqr(fpoint - boid.pos)
|
||||
if dist < 10 {
|
||||
continue
|
||||
}
|
||||
desired := fpoint - boid.pos
|
||||
desired = rl.Vector2ClampValue(desired, 10, 10)
|
||||
if dist < 200 {
|
||||
desired = rl.Vector2Normalize(desired) * (dist / 200 * max_speed)
|
||||
} else {
|
||||
desired = rl.Vector2Normalize(desired) * max_speed
|
||||
}
|
||||
steer := desired - boid.vel
|
||||
steer = rl.Vector2ClampValue(steer, 0, 0.3)
|
||||
boid.vel += steer
|
||||
boid.angle = math.atan2(boid.vel.y, boid.vel.x)
|
||||
steer = rl.Vector2ClampValue(steer, 0, 5)
|
||||
boid.accel += steer
|
||||
boid.vel += boid.accel
|
||||
boid.pos += boid.vel
|
||||
|
||||
desired_angle := math.atan2(boid.vel.y, boid.vel.x)
|
||||
angle := rl.Lerp(boid.angle, desired_angle, s.dt * 7)
|
||||
boid.angle = angle
|
||||
|
||||
boid.accel *= 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -106,7 +121,6 @@ main :: proc() {
|
||||
rl.SetTraceLogLevel(.ERROR)
|
||||
rl.InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Boids")
|
||||
rl.SetTargetFPS(60)
|
||||
// rl.DisableCursor()
|
||||
|
||||
state := init_state()
|
||||
defer {
|
||||
|
Loading…
x
Reference in New Issue
Block a user