snake gaming

This commit is contained in:
Tabby 2025-08-08 15:02:44 +10:00
parent 737128614a
commit f0f173ee06
7 changed files with 83 additions and 9 deletions

View file

@ -1,2 +1,6 @@
# Snake
Snake jam for SXSW Jam 2025
- make the z-order of the current room higher
- disable colliders (and maybe darken?) the non-active rooms

24
camera_2d.gd Normal file
View file

@ -0,0 +1,24 @@
extends Camera2D
var target : Node2D
@export var temp_segment : 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 (Input.is_action_just_pressed("test_switch_cam")):
if(target):
target = null
else:
target = temp_segment
if target:
position = lerp(position, target.position, 0.1 * delta)
zoom = lerp(zoom, Vector2(1,1),0.1 * delta)
else:
position = Vector2(0,0)
zoom = Vector2(0.05,0.05)

1
camera_2d.gd.uid Normal file
View file

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

View file

@ -39,3 +39,14 @@ func get_new_target():
else:
target_pos = next_segment.position
move_progress = 0
func become_real():
#activate colliders
z_index = 10
modulate = Color.WHITE
pass
func become_fake():
z_index = 0
modulate = Color.DIM_GRAY
pass

View file

@ -51,6 +51,11 @@ down={
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
test_switch_cam={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[rendering]

View file

@ -1,21 +1,39 @@
extends Node2D
@export var segements_holder : Node2D
var segements : Array[snake_segment]
@export var SNAKE_SPEED : float = 0.2
@export var snake_line : Line2D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
#segements = get_children() as Array[snake_segment]
segements.assign(get_children())
segements.assign(segements_holder.get_children())
for i in segements.size():
if i == 0:
segements[i].is_head = true
else:
segements[i].next_segment = segements[i-1]
segements[i].snake_speed = SNAKE_SPEED
segements[i].z_index = 100-i
#segements[i].z_index = 100-i
activate_segment(0)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
redraw_line()
pass
func activate_segment(act_segment : int):
for i in segements.size():
if act_segment == i:
segements[i].become_real()
else:
segements[i].become_fake()
func redraw_line():
snake_line.clear_points()
for segment in segements:
snake_line.add_point(segment.global_position)

View file

@ -1,9 +1,10 @@
[gd_scene load_steps=5 format=3 uid="uid://daqqurdrnk61h"]
[gd_scene load_steps=6 format=3 uid="uid://daqqurdrnk61h"]
[ext_resource type="Script" uid="uid://bue4xxejdsmqh" path="res://snakeManager.gd" id="1_6uqi0"]
[ext_resource type="PackedScene" uid="uid://bwoeu7ask0fck" path="res://prefabs/snake_segment.tscn" id="1_8uh7m"]
[ext_resource type="Texture2D" uid="uid://byibhn8fi6ve0" path="res://assets/bg.png" id="1_ppyta"]
[ext_resource type="PackedScene" uid="uid://cusdydgg4b1bo" path="res://prefabs/braincell.tscn" id="2_6uqi0"]
[ext_resource type="Script" uid="uid://b0djy8fmq4qjq" path="res://camera_2d.gd" id="5_ykrsh"]
[node name="Node2D" type="Node2D"]
@ -12,22 +13,32 @@ position = Vector2(-160, -160)
scale = Vector2(320, 320)
texture = ExtResource("1_ppyta")
[node name="Snake" type="Node2D" parent="."]
[node name="Snake" type="Node2D" parent="." node_paths=PackedStringArray("segements_holder", "snake_line")]
script = ExtResource("1_6uqi0")
segements_holder = NodePath("SegementHolder")
SNAKE_SPEED = 1.0
snake_line = NodePath("Line2D")
[node name="SnakeSegment" parent="Snake" instance=ExtResource("1_8uh7m")]
[node name="SegementHolder" type="Node2D" parent="Snake"]
[node name="SnakeSegment" parent="Snake/SegementHolder" instance=ExtResource("1_8uh7m")]
is_head = true
[node name="Braincell" parent="Snake/SnakeSegment" instance=ExtResource("2_6uqi0")]
[node name="Braincell" parent="Snake/SegementHolder/SnakeSegment" instance=ExtResource("2_6uqi0")]
[node name="SnakeSegment2" parent="Snake" node_paths=PackedStringArray("next_segment") instance=ExtResource("1_8uh7m")]
[node name="SnakeSegment2" parent="Snake/SegementHolder" node_paths=PackedStringArray("next_segment") instance=ExtResource("1_8uh7m")]
position = Vector2(-320, 0)
next_segment = NodePath("../SnakeSegment")
[node name="SnakeSegment3" parent="Snake" node_paths=PackedStringArray("next_segment") instance=ExtResource("1_8uh7m")]
[node name="SnakeSegment3" parent="Snake/SegementHolder" node_paths=PackedStringArray("next_segment") instance=ExtResource("1_8uh7m")]
position = Vector2(-640, 0)
next_segment = NodePath("../SnakeSegment2")
[node name="Camera2D" type="Camera2D" parent="."]
[node name="Line2D" type="Line2D" parent="Snake"]
width = 320.0
default_color = Color(0, 0.662728, 1.54018e-06, 1)
[node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("temp_segment")]
zoom = Vector2(0.05, 0.05)
script = ExtResource("5_ykrsh")
temp_segment = NodePath("../Snake/SegementHolder/SnakeSegment")