mirror of
https://github.com/RYGhub/the-cold-night.git
synced 2024-11-28 23:44:18 +00:00
🧹 Clean up AttractedTo
This commit is contained in:
parent
e08870b788
commit
cd83f39b3d
4 changed files with 43 additions and 33 deletions
|
@ -1,27 +0,0 @@
|
||||||
extends Node
|
|
||||||
|
|
||||||
|
|
||||||
export var movement_per_second: float = 32.0
|
|
||||||
export var goal_path: String = "../../PhaseOneContainer/Fire"
|
|
||||||
|
|
||||||
|
|
||||||
onready var target: KinematicBody2D = get_parent()
|
|
||||||
# TODO: Use a better algorithm
|
|
||||||
onready var goal: StaticBody2D = get_node(goal_path)
|
|
||||||
|
|
||||||
|
|
||||||
signal touching_goal
|
|
||||||
var goal_reached_triggered: bool = false
|
|
||||||
signal goal_reached
|
|
||||||
|
|
||||||
func _physics_process(_delta):
|
|
||||||
if target.global_position != null:
|
|
||||||
var direction: Vector2 = (goal.global_position - target.global_position).normalized()
|
|
||||||
var _motion: Vector2 = target.move_and_slide(direction * movement_per_second, Vector2.ZERO)
|
|
||||||
for slide_no in target.get_slide_count():
|
|
||||||
var slide = target.get_slide_collision(slide_no)
|
|
||||||
if slide.collider == goal:
|
|
||||||
emit_signal("touching_goal")
|
|
||||||
if not goal_reached_triggered:
|
|
||||||
emit_signal("goal_reached")
|
|
||||||
goal_reached_triggered = true
|
|
|
@ -1,6 +0,0 @@
|
||||||
[gd_scene load_steps=2 format=2]
|
|
||||||
|
|
||||||
[ext_resource path="res://src/entities/behaviours/AttractedTo.gd" type="Script" id=1]
|
|
||||||
|
|
||||||
[node name="AttractedTo" type="Node"]
|
|
||||||
script = ExtResource( 1 )
|
|
34
src/entities/behaviours/AttractedToMovement.gd
Normal file
34
src/entities/behaviours/AttractedToMovement.gd
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
extends Node
|
||||||
|
class_name AttractedToMovement
|
||||||
|
|
||||||
|
|
||||||
|
signal touching_goal
|
||||||
|
signal goal_reached
|
||||||
|
|
||||||
|
|
||||||
|
export var movement_per_second: float
|
||||||
|
export var goal_path: NodePath
|
||||||
|
|
||||||
|
|
||||||
|
onready var parent: KinematicBody2D = get_parent()
|
||||||
|
onready var goal: StaticBody2D = get_node(goal_path) if goal_path else null
|
||||||
|
|
||||||
|
|
||||||
|
var _goal_reached_triggered: bool = false
|
||||||
|
|
||||||
|
|
||||||
|
func move():
|
||||||
|
var direction: Vector2 = (goal.global_position - parent.global_position).normalized()
|
||||||
|
var _motion: Vector2 = parent.move_and_slide(direction * movement_per_second, Vector2.ZERO)
|
||||||
|
for slide_no in parent.get_slide_count():
|
||||||
|
var slide = parent.get_slide_collision(slide_no)
|
||||||
|
if slide.collider == goal:
|
||||||
|
emit_signal("touching_goal")
|
||||||
|
if not _goal_reached_triggered:
|
||||||
|
emit_signal("goal_reached")
|
||||||
|
_goal_reached_triggered = true
|
||||||
|
|
||||||
|
|
||||||
|
func _physics_process(_delta):
|
||||||
|
if goal:
|
||||||
|
move()
|
9
src/entities/behaviours/AttractedToMovement.tscn
Normal file
9
src/entities/behaviours/AttractedToMovement.tscn
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/entities/behaviours/AttractedToMovement.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="AttractedToMovement" type="Node"]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
__meta__ = {
|
||||||
|
"_editor_description_": "Moves the parent KinematicBody2D towards the specified goal."
|
||||||
|
}
|
Loading…
Reference in a new issue