summaryrefslogtreecommitdiff
path: root/src/entities/actors/snake/body_segment/body_segment.gd
diff options
context:
space:
mode:
authorDavid Luevano Alvarado <david@luevano.xyz>2022-05-30 04:28:12 -0600
committerDavid Luevano Alvarado <david@luevano.xyz>2022-05-30 04:28:12 -0600
commit2838046928db956b7712d24dfb63ee45fbc4d050 (patch)
tree777be86f84a28498964578a826dad81bb14e7c5c /src/entities/actors/snake/body_segment/body_segment.gd
parent0aa26dc19da1c8907cd69d18b423c33f351d3f2f (diff)
add non-working segment system.. might need to go back to using rigidbodies
Diffstat (limited to 'src/entities/actors/snake/body_segment/body_segment.gd')
-rw-r--r--src/entities/actors/snake/body_segment/body_segment.gd27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/entities/actors/snake/body_segment/body_segment.gd b/src/entities/actors/snake/body_segment/body_segment.gd
new file mode 100644
index 0000000..eabede3
--- /dev/null
+++ b/src/entities/actors/snake/body_segment/body_segment.gd
@@ -0,0 +1,27 @@
+extends Node2D
+
+export(NodePath) var PREV_SEGMENT_NP: NodePath
+
+onready var prev_segment: Node2D = get_node(PREV_SEGMENT_NP)
+onready var prev_segment_next_pivot: Node2D = prev_segment.get_node("NextPivot")
+onready var _prev_pivot: Node2D = $PrevPivot
+onready var _next_pivot: Node2D = $NextPivot
+
+var rot_speed: float = Global.SNAKE_SEGMENT_ROT_SPEED
+
+var prev_segment_next_pivot_to_center: Vector2
+var _center_to_prev_pivot: Vector2
+var _angle_between_segments: float
+
+
+func _process(delta: float) -> void:
+ prev_segment_next_pivot_to_center = prev_segment_next_pivot.global_position - prev_segment.global_position
+ _center_to_prev_pivot = _prev_pivot.global_position - global_position
+
+ _angle_between_segments = _center_to_prev_pivot.angle_to(prev_segment_next_pivot_to_center)
+ if _angle_between_segments > 0.0:
+ rotate(deg2rad(-rot_speed * delta))
+ else:
+ rotate(deg2rad(rot_speed * delta))
+
+ global_position = prev_segment_next_pivot.global_position - _center_to_prev_pivot