23 lines
666 B
GDScript3
23 lines
666 B
GDScript3
|
|
class_name NPCCharacter extends CharacterBody2D
|
||
|
|
|
||
|
|
func _physics_process(delta: float) -> void:
|
||
|
|
handle_movement(delta)
|
||
|
|
move_and_slide()
|
||
|
|
handle_collisions()
|
||
|
|
|
||
|
|
func handle_movement(_delta)->void:
|
||
|
|
# Add the gravity.
|
||
|
|
if not is_on_floor():
|
||
|
|
velocity += get_gravity() * _delta
|
||
|
|
func knockBack(direction, duration:float=0.2):
|
||
|
|
velocity = direction
|
||
|
|
await get_tree().create_timer(duration).timeout
|
||
|
|
velocity = Vector2.ZERO
|
||
|
|
func handle_collisions()->void:
|
||
|
|
for i in get_slide_collision_count():
|
||
|
|
var collision = get_slide_collision(i)
|
||
|
|
var collider = collision.get_collider()
|
||
|
|
# Check the collider's group or type
|
||
|
|
if collider is Player:
|
||
|
|
print("NPC hit by player")
|