Godot Version 4
Question
How do I make an entity go across another entity?
extends CharacterBody2D
class_name SlimeEnemy
@onready var slime_sprite = $AnimatedSprite2D
@onready var hitbox = %Hitbox
var speed:int = 100
@onready var player = %Player
@onready var timer = %Prepatk
var health = 80
var health_min = 0
var death:bool = false
var taking_damage:bool = false
var damage_dealt: int = 10
var is_dealing_damage:bool = false
var dir: Vector2
var knockback_force: int = 200
var is_roaming:bool = true
var state: String
func _ready() -> void:
slime_sprite.stop()
state = "chase"
timer.stop()
func _process(_delta):
if timer.time_left >= 0:
print(timer.time_left)
func _physics_process(delta: float) -> void:
animation_handler()
movement_calc()
move_and_slide()
func animation_handler():
if state == "Idle":
slime_sprite.play("Idle")
elif state == "attack":
slime_sprite.play("Attack")
elif state == "chase":
slime_sprite.play("Jump")
func movement_calc():
dir = global_position.direction_to(player.position)
velocity = dir * speed
if state == "attack_prep":
velocity = Vector2(0,0)
elif state == "attack":
attack()
func attack():
dir = global_position.direction_to(player.position)
speed = 10
velocity = dir * speed
hitbox.disabled = true
velocity = dir * speed
print(hitbox.disabled)
state = "chase"
func _on_area_2d_body_entered(body: Node2D) -> void:
state = "attack_prep"
velocity = Vector2(0,0)
timer.start()
func _on_prepatk_timeout() -> void:
state = "attack"
So I’m trying to make it so that the slime scene gets the players position and makes a Vector2() that goes ACROSS the player position but I’m not sure how to calculate that.