first
This commit is contained in:
36
actors/Enemies/Spider/ik_target.gd
Normal file
36
actors/Enemies/Spider/ik_target.gd
Normal file
@@ -0,0 +1,36 @@
|
||||
extends Marker3D
|
||||
class_name SpiderIKTarget
|
||||
|
||||
@export var step_target: Marker3D
|
||||
@export var step_distance: float = 1.75
|
||||
@export var tween_duration: float = 0.45
|
||||
|
||||
@export var adjacent_target: SpiderIKTarget
|
||||
@export var opposite_target: SpiderIKTarget
|
||||
|
||||
var spider_body: CharacterBody3D
|
||||
|
||||
var is_stepping := false
|
||||
var can_step : = false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
top_level = true
|
||||
spider_body = get_parent()
|
||||
step_distance = step_distance * owner.scale.x
|
||||
tween_duration = tween_duration * owner.scale.x
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if !is_stepping && !adjacent_target.is_stepping && abs(self.global_position.distance_to(step_target.global_position)) >= step_distance:
|
||||
step()
|
||||
opposite_target.step()
|
||||
|
||||
func step():
|
||||
var target_pos = step_target.global_position
|
||||
var half_way = (global_position + step_target.global_position) /2
|
||||
is_stepping = true
|
||||
|
||||
var t = create_tween()
|
||||
t.tween_property(self,"global_position",half_way + owner.basis.y-Vector3(0,0.45,0)*owner.scale.x,tween_duration / spider_body.velocity.length())
|
||||
t.tween_property(self,"global_position", target_pos,tween_duration / spider_body.velocity.length())
|
||||
t.tween_callback(func(): is_stepping = false)
|
||||
Reference in New Issue
Block a user