door between segements are placed and rotated correctly :3

This commit is contained in:
Tabby 2025-08-08 20:12:11 +10:00
parent 1c0fbf3d69
commit 5197d10172
7 changed files with 96 additions and 2 deletions

23
prefabs/door.gd Normal file
View file

@ -0,0 +1,23 @@
extends Node2D
@export var this_seg : Node2D
@export var prev_seg : Node2D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if this_seg and prev_seg:
show() # would also need to enable/disable
look_at(prev_seg.position)
#position = curve.get_closest_point(lerp(this_seg.position,prev_seg.position,0.5))
#global_position = lerp(this_seg.global_position,next_seg.global_position,0.5)
else:
hide()
# rotate arm towards next seg

1
prefabs/door.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://be6ituviy74ta

View file

@ -6,6 +6,7 @@ var direction : Vector2 = Vector2.RIGHT
var want_direction : Vector2 = Vector2.RIGHT
@export var next_segment : Node2D
@export var door : Node2D
var start_pos : Vector2
var target_pos : Vector2
var move_progress : float

View file

@ -1,11 +1,17 @@
[gd_scene load_steps=4 format=3 uid="uid://bwoeu7ask0fck"]
[gd_scene load_steps=7 format=3 uid="uid://bwoeu7ask0fck"]
[ext_resource type="Script" uid="uid://b5cqo12km1nh3" path="res://prefabs/snake_segment.gd" id="1_3ulhv"]
[ext_resource type="Texture2D" uid="uid://l8x3dp68yyxr" path="res://assets/segement.png" id="1_6uqch"]
[ext_resource type="Script" uid="uid://deq18nev0kwbg" path="res://addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.gd" id="2_3ulhv"]
[ext_resource type="Script" uid="uid://be6ituviy74ta" path="res://prefabs/door.gd" id="4_08kyq"]
[ext_resource type="Texture2D" uid="uid://cay1k1dp8yf12" path="res://assets/door.png" id="4_34t3n"]
[node name="SnakeSegment" type="AnimatableBody2D"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_08kyq"]
size = Vector2(24, 64)
[node name="SnakeSegment" type="AnimatableBody2D" node_paths=PackedStringArray("door")]
script = ExtResource("1_3ulhv")
door = NodePath("DoorArm")
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("1_6uqch")
@ -15,3 +21,29 @@ polygon = PackedVector2Array(9.85808e-15, -161, 31.4095, -157.906, 61.612, -148.
script = ExtResource("2_3ulhv")
radius = 160.0
metadata/_custom_type_script = "uid://deq18nev0kwbg"
[node name="DoorArm" type="Node2D" parent="." node_paths=PackedStringArray("this_seg")]
script = ExtResource("4_08kyq")
this_seg = NodePath("..")
[node name="Door" type="Node2D" parent="DoorArm"]
position = Vector2(160, 0)
scale = Vector2(1, 1)
[node name="DoorIn" type="Area2D" parent="DoorArm/Door"]
position = Vector2(-16, 0)
[node name="CollisionShape2D" type="CollisionShape2D" parent="DoorArm/Door/DoorIn"]
position = Vector2(32, 0)
shape = SubResource("RectangleShape2D_08kyq")
[node name="DoorOut" type="Area2D" parent="DoorArm/Door"]
position = Vector2(16, 0)
rotation = 3.14159
[node name="CollisionShape2D" type="CollisionShape2D" parent="DoorArm/Door/DoorOut"]
position = Vector2(32, 0)
shape = SubResource("RectangleShape2D_08kyq")
[node name="Sprite2D" type="Sprite2D" parent="DoorArm/Door"]
texture = ExtResource("4_34t3n")