door between segements are placed and rotated correctly :3
This commit is contained in:
parent
1c0fbf3d69
commit
5197d10172
7 changed files with 96 additions and 2 deletions
BIN
assets/door.png
Normal file
BIN
assets/door.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 371 B |
34
assets/door.png.import
Normal file
34
assets/door.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cay1k1dp8yf12"
|
||||
path="res://.godot/imported/door.png-b71998044d513d047c9b0091ee4a07ff.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/door.png"
|
||||
dest_files=["res://.godot/imported/door.png-b71998044d513d047c9b0091ee4a07ff.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
23
prefabs/door.gd
Normal file
23
prefabs/door.gd
Normal 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
1
prefabs/door.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://be6ituviy74ta
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -12,8 +12,11 @@ func _ready() -> void:
|
|||
for i in segements.size():
|
||||
if i == 0:
|
||||
segements[i].is_head = true
|
||||
|
||||
else:
|
||||
segements[i].next_segment = segements[i-1]
|
||||
if i < segements.size()-1:
|
||||
segements[i].door.prev_seg = segements[i+1]
|
||||
segements[i].snake_speed = SNAKE_SPEED
|
||||
#segements[i].z_index = 100-i
|
||||
activate_segment(0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue