slowed the snake down, now the doors are much more reliable
This commit is contained in:
parent
5197d10172
commit
7584cf0b19
11 changed files with 71 additions and 10 deletions
12
braincell.gd
12
braincell.gd
|
|
@ -23,3 +23,15 @@ func _physics_process(delta: float) -> void:
|
||||||
velocity = velocity.move_toward(Vector2(0,0), SPEED)
|
velocity = velocity.move_toward(Vector2(0,0), SPEED)
|
||||||
|
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_door_box_area_entered(area: Area2D) -> void:
|
||||||
|
print(area.name)
|
||||||
|
if area.name == "DoorIn":
|
||||||
|
global_position = area.get_parent().get_parent().door_out_node.global_position
|
||||||
|
Router.activate_seg.emit(Router.cur_id + 1)
|
||||||
|
# +1 seg
|
||||||
|
elif area.name == "DoorOut":
|
||||||
|
global_position = area.get_parent().get_parent().door_in_node.global_position
|
||||||
|
Router.activate_seg.emit(Router.cur_id - 1)
|
||||||
|
# -1 seg
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=4 format=3 uid="uid://cusdydgg4b1bo"]
|
[gd_scene load_steps=5 format=3 uid="uid://cusdydgg4b1bo"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b48mlxrnte625" path="res://braincell.gd" id="1_q1ksn"]
|
[ext_resource type="Script" uid="uid://b48mlxrnte625" path="res://braincell.gd" id="1_q1ksn"]
|
||||||
[ext_resource type="Texture2D" uid="uid://qyd5e7lb2esx" path="res://assets/braincell.png" id="2_wv6rk"]
|
[ext_resource type="Texture2D" uid="uid://qyd5e7lb2esx" path="res://assets/braincell.png" id="2_wv6rk"]
|
||||||
|
|
@ -6,7 +6,11 @@
|
||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_g14j6"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_g14j6"]
|
||||||
radius = 16.0
|
radius = 16.0
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_q1ksn"]
|
||||||
|
radius = 7.07107
|
||||||
|
|
||||||
[node name="Braincell" type="CharacterBody2D"]
|
[node name="Braincell" type="CharacterBody2D"]
|
||||||
|
z_index = 15
|
||||||
motion_mode = 1
|
motion_mode = 1
|
||||||
script = ExtResource("1_q1ksn")
|
script = ExtResource("1_q1ksn")
|
||||||
|
|
||||||
|
|
@ -15,3 +19,10 @@ texture = ExtResource("2_wv6rk")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
shape = SubResource("CircleShape2D_g14j6")
|
shape = SubResource("CircleShape2D_g14j6")
|
||||||
|
|
||||||
|
[node name="doorBox" type="Area2D" parent="."]
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="doorBox"]
|
||||||
|
shape = SubResource("CircleShape2D_q1ksn")
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="doorBox" to="." method="_on_door_box_area_entered"]
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ extends Node2D
|
||||||
|
|
||||||
@export var this_seg : Node2D
|
@export var this_seg : Node2D
|
||||||
@export var prev_seg : Node2D
|
@export var prev_seg : Node2D
|
||||||
|
@export var door_in_node : Node2D
|
||||||
|
@export var door_out_node : Node2D
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ var want_direction : Vector2 = Vector2.RIGHT
|
||||||
var start_pos : Vector2
|
var start_pos : Vector2
|
||||||
var target_pos : Vector2
|
var target_pos : Vector2
|
||||||
var move_progress : float
|
var move_progress : float
|
||||||
|
var seg_id : int
|
||||||
|
|
||||||
var snake_speed : float = 1
|
var snake_speed : float = 1
|
||||||
# if snake is the head, it chooses where it goes
|
# if snake is the head, it chooses where it goes
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://cay1k1dp8yf12" path="res://assets/door.png" id="4_34t3n"]
|
[ext_resource type="Texture2D" uid="uid://cay1k1dp8yf12" path="res://assets/door.png" id="4_34t3n"]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_08kyq"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_08kyq"]
|
||||||
size = Vector2(24, 64)
|
size = Vector2(16, 64)
|
||||||
|
|
||||||
[node name="SnakeSegment" type="AnimatableBody2D" node_paths=PackedStringArray("door")]
|
[node name="SnakeSegment" type="AnimatableBody2D" node_paths=PackedStringArray("door")]
|
||||||
script = ExtResource("1_3ulhv")
|
script = ExtResource("1_3ulhv")
|
||||||
|
|
@ -22,27 +22,29 @@ script = ExtResource("2_3ulhv")
|
||||||
radius = 160.0
|
radius = 160.0
|
||||||
metadata/_custom_type_script = "uid://deq18nev0kwbg"
|
metadata/_custom_type_script = "uid://deq18nev0kwbg"
|
||||||
|
|
||||||
[node name="DoorArm" type="Node2D" parent="." node_paths=PackedStringArray("this_seg")]
|
[node name="DoorArm" type="Node2D" parent="." node_paths=PackedStringArray("this_seg", "door_in_node", "door_out_node")]
|
||||||
script = ExtResource("4_08kyq")
|
script = ExtResource("4_08kyq")
|
||||||
this_seg = NodePath("..")
|
this_seg = NodePath("..")
|
||||||
|
door_in_node = NodePath("Door/DoorIn")
|
||||||
|
door_out_node = NodePath("Door/DoorOut")
|
||||||
|
|
||||||
[node name="Door" type="Node2D" parent="DoorArm"]
|
[node name="Door" type="Node2D" parent="DoorArm"]
|
||||||
|
z_index = 11
|
||||||
position = Vector2(160, 0)
|
position = Vector2(160, 0)
|
||||||
scale = Vector2(1, 1)
|
|
||||||
|
|
||||||
[node name="DoorIn" type="Area2D" parent="DoorArm/Door"]
|
[node name="DoorIn" type="Area2D" parent="DoorArm/Door"]
|
||||||
position = Vector2(-16, 0)
|
position = Vector2(-22, 0)
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DoorArm/Door/DoorIn"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DoorArm/Door/DoorIn"]
|
||||||
position = Vector2(32, 0)
|
position = Vector2(14, 0)
|
||||||
shape = SubResource("RectangleShape2D_08kyq")
|
shape = SubResource("RectangleShape2D_08kyq")
|
||||||
|
|
||||||
[node name="DoorOut" type="Area2D" parent="DoorArm/Door"]
|
[node name="DoorOut" type="Area2D" parent="DoorArm/Door"]
|
||||||
position = Vector2(16, 0)
|
position = Vector2(22, 0)
|
||||||
rotation = 3.14159
|
rotation = 3.14159
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DoorArm/Door/DoorOut"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DoorArm/Door/DoorOut"]
|
||||||
position = Vector2(32, 0)
|
position = Vector2(14, 3.54925e-05)
|
||||||
shape = SubResource("RectangleShape2D_08kyq")
|
shape = SubResource("RectangleShape2D_08kyq")
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="DoorArm/Door"]
|
[node name="Sprite2D" type="Sprite2D" parent="DoorArm/Door"]
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,10 @@ run/main_scene="uid://daqqurdrnk61h"
|
||||||
config/features=PackedStringArray("4.4", "GL Compatibility")
|
config/features=PackedStringArray("4.4", "GL Compatibility")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[autoload]
|
||||||
|
|
||||||
|
Router="*res://router.tscn"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
window/size/viewport_width=640
|
window/size/viewport_width=640
|
||||||
|
|
|
||||||
15
router.gd
Normal file
15
router.gd
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
signal activate_seg(int)
|
||||||
|
|
||||||
|
var current_seg : Node2D
|
||||||
|
var cur_id : int = 0
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
pass
|
||||||
1
router.gd.uid
Normal file
1
router.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://de1xqrlclscb3
|
||||||
6
router.tscn
Normal file
6
router.tscn
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://dm0mfe0g3y0wl"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://de1xqrlclscb3" path="res://router.gd" id="1_rxtgq"]
|
||||||
|
|
||||||
|
[node name="Router" type="Node"]
|
||||||
|
script = ExtResource("1_rxtgq")
|
||||||
|
|
@ -4,9 +4,11 @@ extends Node2D
|
||||||
var segements : Array[snake_segment]
|
var segements : Array[snake_segment]
|
||||||
@export var SNAKE_SPEED : float = 0.2
|
@export var SNAKE_SPEED : float = 0.2
|
||||||
@export var snake_line : Line2D
|
@export var snake_line : Line2D
|
||||||
|
@export var player : Node2D
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
Router.activate_seg.connect(activate_segment)
|
||||||
#segements = get_children() as Array[snake_segment]
|
#segements = get_children() as Array[snake_segment]
|
||||||
segements.assign(segements_holder.get_children())
|
segements.assign(segements_holder.get_children())
|
||||||
for i in segements.size():
|
for i in segements.size():
|
||||||
|
|
@ -18,6 +20,7 @@ func _ready() -> void:
|
||||||
if i < segements.size()-1:
|
if i < segements.size()-1:
|
||||||
segements[i].door.prev_seg = segements[i+1]
|
segements[i].door.prev_seg = segements[i+1]
|
||||||
segements[i].snake_speed = SNAKE_SPEED
|
segements[i].snake_speed = SNAKE_SPEED
|
||||||
|
segements[i].seg_id = i
|
||||||
#segements[i].z_index = 100-i
|
#segements[i].z_index = 100-i
|
||||||
activate_segment(0)
|
activate_segment(0)
|
||||||
|
|
||||||
|
|
@ -28,6 +31,9 @@ func _process(delta: float) -> void:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func activate_segment(act_segment : int):
|
func activate_segment(act_segment : int):
|
||||||
|
Router.current_seg = segements[act_segment]
|
||||||
|
Router.cur_id = act_segment
|
||||||
|
player.reparent(Router.current_seg)
|
||||||
for i in segements.size():
|
for i in segements.size():
|
||||||
if act_segment == i:
|
if act_segment == i:
|
||||||
segements[i].become_real()
|
segements[i].become_real()
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,12 @@ position = Vector2(-160, -160)
|
||||||
scale = Vector2(320, 320)
|
scale = Vector2(320, 320)
|
||||||
texture = ExtResource("1_ppyta")
|
texture = ExtResource("1_ppyta")
|
||||||
|
|
||||||
[node name="Snake" type="Node2D" parent="." node_paths=PackedStringArray("segements_holder", "snake_line")]
|
[node name="Snake" type="Node2D" parent="." node_paths=PackedStringArray("segements_holder", "snake_line", "player")]
|
||||||
script = ExtResource("1_6uqi0")
|
script = ExtResource("1_6uqi0")
|
||||||
segements_holder = NodePath("SegementHolder")
|
segements_holder = NodePath("SegementHolder")
|
||||||
SNAKE_SPEED = 1.0
|
SNAKE_SPEED = 0.3
|
||||||
snake_line = NodePath("Line2D")
|
snake_line = NodePath("Line2D")
|
||||||
|
player = NodePath("SegementHolder/SnakeSegment/Braincell")
|
||||||
|
|
||||||
[node name="SegementHolder" type="Node2D" parent="Snake"]
|
[node name="SegementHolder" type="Node2D" parent="Snake"]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue