mirror of
https://github.com/creyD/ludum_dare_46.git
synced 2026-06-13 22:12:23 +02:00
Added beginnings of boss
This commit is contained in:
34
src/Boss/SlimeBoss/States/Roam/MoveToRandomPosition.gd
Normal file
34
src/Boss/SlimeBoss/States/Roam/MoveToRandomPosition.gd
Normal file
@@ -0,0 +1,34 @@
|
||||
extends "res://Overlap/StateMachine/State.gd"
|
||||
|
||||
export(float) var ARRIVE_DISTANCE = 6.0
|
||||
export(float) var SLOW_RADIUS = 200.0
|
||||
export(float) var MASS = 4.0
|
||||
export(float) var MAX_SPEED = 300.0
|
||||
export(float) var ROAM_RADIUS = 150.0
|
||||
|
||||
|
||||
|
||||
var target_position = Vector2()
|
||||
var start_position = Vector2()
|
||||
var velocity = Vector2()
|
||||
|
||||
func enter():
|
||||
start_position = get_parent().start_position
|
||||
target_position = calculate_new_target_position()
|
||||
owner.get_node('AnimationPlayer').play('move')
|
||||
|
||||
|
||||
func update(delta):
|
||||
velocity = Steering.arrive_to(velocity, owner.global_position, target_position, MASS, SLOW_RADIUS, MAX_SPEED)
|
||||
owner.move_and_slide(velocity)
|
||||
|
||||
if owner.global_position.distance_to(target_position) < ARRIVE_DISTANCE:
|
||||
emit_signal('finished')
|
||||
|
||||
|
||||
func calculate_new_target_position():
|
||||
randomize()
|
||||
var random_angle = randf() * 2 * PI
|
||||
randomize()
|
||||
var random_radius = (randf() * ROAM_RADIUS) / 2 + ROAM_RADIUS / 2
|
||||
return start_position + Vector2(cos(random_angle) * random_radius, sin(random_angle) * random_radius)
|
||||
Reference in New Issue
Block a user