mirror of
https://github.com/Relintai/godot-steering-ai-framework.git
synced 2024-12-28 09:47:16 +01:00
1baed58659
I made minimal changes, mostly cosmetic like so: - rename KinematicMovementType to MovementType since GSTKinematicBody2DAgent.KinematicMovementType.COLLIDE for example is really more than a mouthful with repeated Kinematic in the name - add optional movement_type parameter to the constructor, otherwise we'd be forced to construct the object and then specify as an aditional step the type of movement if we want something else than the default - rewrote the constructor to yield on ready and removed _on_body_ready - renamed _apply_steering to apply_steering as this is a public method - renamed _on_SceneTree_frame to _on_SceneTree_physics_frame
30 lines
766 B
GDScript
30 lines
766 B
GDScript
extends KinematicBody2D
|
|
|
|
|
|
var agent := GSTKinematicBody2DAgent.new(self)
|
|
var target := GSTAgentLocation.new()
|
|
var arrive := GSTArrive.new(agent, target)
|
|
var _accel := GSTTargetAcceleration.new()
|
|
|
|
var _velocity := Vector2()
|
|
var _drag := 0.1
|
|
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
arrive.calculate_steering(_accel)
|
|
agent.apply_steering(_accel, delta)
|
|
|
|
|
|
func setup(
|
|
linear_speed_max: float,
|
|
linear_acceleration_max: float,
|
|
arrival_tolerance: float,
|
|
deceleration_radius: float
|
|
) -> void:
|
|
agent.linear_speed_max = linear_speed_max
|
|
agent.linear_acceleration_max = linear_acceleration_max
|
|
agent.linear_drag_percentage = _drag
|
|
arrive.deceleration_radius = deceleration_radius
|
|
arrive.arrival_tolerance = arrival_tolerance
|
|
target.position = agent.position
|