Second Prototype

This commit is contained in:
Exobyt 2024-08-18 21:59:35 +02:00
parent 885351b624
commit 632eeddc64
60 changed files with 680 additions and 1013 deletions

View file

@ -0,0 +1,5 @@
[gd_scene format=3 uid="uid://yw2cspv5rkwh"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
position = Vector2(32, 32)
polygon = PackedVector2Array(48, -16, 48, -48, -112, -48, -112, -16)

View file

@ -0,0 +1,18 @@
[gd_scene load_steps=4 format=3 uid="uid://b6aa24lk0ush1"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_cqyb4"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_4ivv2"]
[ext_resource type="PackedScene" uid="uid://yw2cspv5rkwh" path="res://scenes/Blocks/Patterns/1x3/1x3_Collision.tscn" id="3_vkhdr"]
[node name="BlockPattern" instance=ExtResource("1_cqyb4")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_4ivv2")]
position = Vector2(-64, 0)
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_4ivv2")]
turningPoint = true
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_4ivv2")]
position = Vector2(64, 0)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_vkhdr")]

View file

@ -0,0 +1,4 @@
[gd_scene format=3 uid="uid://dw1dt1jp6e06h"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
polygon = PackedVector2Array(48, 48, 48, -48, -48, -48, -48, 48)

View file

@ -0,0 +1,21 @@
[gd_scene load_steps=4 format=3 uid="uid://dneih4b0e2snv"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_sj41y"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_csenr"]
[ext_resource type="PackedScene" uid="uid://dw1dt1jp6e06h" path="res://scenes/Blocks/Patterns/2x2/2x2_Collision.tscn" id="3_10q5w"]
[node name="BlockPattern" instance=ExtResource("1_sj41y")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_csenr")]
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_csenr")]
position = Vector2(0, -64)
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_csenr")]
position = Vector2(-64, -64)
[node name="PositionMarker4" parent="Positions" index="3" instance=ExtResource("2_csenr")]
position = Vector2(-64, 0)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_10q5w")]
position = Vector2(-32, -32)

View file

@ -0,0 +1,4 @@
[gd_scene format=3 uid="uid://ufbeturvvirh"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
polygon = PackedVector2Array(112, -16, 112, -48, -112, -48, -112, -16)

View file

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=3 uid="uid://hlwbhtymstbv"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_ri22b"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_6qvmy"]
[ext_resource type="PackedScene" uid="uid://ufbeturvvirh" path="res://scenes/Blocks/Patterns/I/I_Collision.tscn" id="3_1ktcx"]
[node name="BlockPattern" instance=ExtResource("1_ri22b")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_6qvmy")]
position = Vector2(-64, 0)
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_6qvmy")]
turningPoint = true
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_6qvmy")]
position = Vector2(64, 0)
[node name="PositionMarker4" parent="Positions" index="3" instance=ExtResource("2_6qvmy")]
position = Vector2(128, 0)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_1ktcx")]
position = Vector2(32, 32)

View file

@ -0,0 +1,4 @@
[gd_scene format=3 uid="uid://w0ak23cjswln"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
polygon = PackedVector2Array(48, -16, 48, -48, -80, -48, -80, -112, -112, -112, -112, -16)

View file

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=3 uid="uid://1ubuiryqny62"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_y8gyp"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_tsq70"]
[ext_resource type="PackedScene" uid="uid://w0ak23cjswln" path="res://scenes/Blocks/Patterns/L-Reverse/L-Reverse_Collision.tscn" id="3_k23nd"]
[node name="BlockPattern" instance=ExtResource("1_y8gyp")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_tsq70")]
position = Vector2(-64, 0)
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_tsq70")]
turningPoint = true
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_tsq70")]
position = Vector2(64, 0)
[node name="PositionMarker4" parent="Positions" index="3" instance=ExtResource("2_tsq70")]
position = Vector2(-64, -64)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_k23nd")]
position = Vector2(32, 32)

View file

@ -0,0 +1,4 @@
[gd_scene format=3 uid="uid://663ocu3x6tjb"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
polygon = PackedVector2Array(48, 48, 48, -48, 16, -48, 16, 16, -112, 16, -112, 48)

View file

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=3 uid="uid://d00ywshnytrdo"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_e7pv8"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_q62gn"]
[ext_resource type="PackedScene" uid="uid://663ocu3x6tjb" path="res://scenes/Blocks/Patterns/L/L_Collision.tscn" id="3_ji3us"]
[node name="BlockPattern" instance=ExtResource("1_e7pv8")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_q62gn")]
position = Vector2(-64, 0)
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_q62gn")]
turningPoint = true
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_q62gn")]
position = Vector2(64, 0)
[node name="PositionMarker4" parent="Positions" index="3" instance=ExtResource("2_q62gn")]
position = Vector2(64, -64)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_ji3us")]
position = Vector2(32, -32)

View file

@ -0,0 +1,4 @@
[gd_scene format=3 uid="uid://dwfkvfcrbxr43"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
polygon = PackedVector2Array(-48, 48, 112, 48, 112, 16, 48, 16, 48, -48, 16, -48, 16, 16, -48, 16)

View file

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=3 uid="uid://c25mwygtprl08"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_1p2cg"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_pponh"]
[ext_resource type="PackedScene" uid="uid://dwfkvfcrbxr43" path="res://scenes/Blocks/Patterns/T/T_Collision.tscn" id="3_svqqd"]
[node name="BlockPattern" instance=ExtResource("1_1p2cg")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_pponh")]
position = Vector2(-64, 0)
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_pponh")]
turningPoint = true
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_pponh")]
position = Vector2(64, 0)
[node name="PositionMarker4" parent="Positions" index="3" instance=ExtResource("2_pponh")]
position = Vector2(0, -64)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_svqqd")]
position = Vector2(-24, -32)

View file

@ -0,0 +1,5 @@
[gd_scene format=3 uid="uid://wv65ib41nt8v"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
position = Vector2(32, -32)
polygon = PackedVector2Array(48, 48, 48, 16, -16, 16, -16, -48, -112, -48, -112, -16, -48, -16, -48, 48)

View file

@ -0,0 +1,21 @@
[gd_scene load_steps=4 format=3 uid="uid://bnpmnhr43ls40"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_skje3"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_prllt"]
[ext_resource type="PackedScene" uid="uid://wv65ib41nt8v" path="res://scenes/Blocks/Patterns/Z-Reverse/Z-Reverse_Collision.tscn" id="3_xf113"]
[node name="BlockPattern" instance=ExtResource("1_skje3")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_prllt")]
position = Vector2(-64, -64)
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_prllt")]
position = Vector2(0, -64)
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_prllt")]
turningPoint = true
[node name="PositionMarker4" parent="Positions" index="3" instance=ExtResource("2_prllt")]
position = Vector2(64, 0)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_xf113")]

View file

@ -0,0 +1,4 @@
[gd_scene format=3 uid="uid://dkugrxq2fo1vh"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D"]
polygon = PackedVector2Array(16, 16, 16, -48, 80, -48, 80, -80, -16, -80, -16, -16, -80, -16, -80, 16)

View file

@ -0,0 +1,21 @@
[gd_scene load_steps=4 format=3 uid="uid://ba70ybe7ico7f"]
[ext_resource type="PackedScene" uid="uid://7knb2yqvkw6i" path="res://scenes/Blocks/Patterns/block_pattern.tscn" id="1_ccvbw"]
[ext_resource type="PackedScene" uid="uid://2v7wok4hnr6c" path="res://scenes/Blocks/Patterns/position_marker.tscn" id="2_y06oe"]
[ext_resource type="PackedScene" uid="uid://dkugrxq2fo1vh" path="res://scenes/Blocks/Patterns/Z/Z-Collision.tscn" id="3_0127o"]
[node name="BlockPattern" instance=ExtResource("1_ccvbw")]
[node name="PositionMarker" parent="Positions" index="0" instance=ExtResource("2_y06oe")]
position = Vector2(-64, 0)
[node name="PositionMarker2" parent="Positions" index="1" instance=ExtResource("2_y06oe")]
turningPoint = true
[node name="PositionMarker3" parent="Positions" index="2" instance=ExtResource("2_y06oe")]
position = Vector2(0, -64)
[node name="PositionMarker4" parent="Positions" index="3" instance=ExtResource("2_y06oe")]
position = Vector2(64, -64)
[node name="CollisionPolygon2D" parent="CollisionTest" index="0" instance=ExtResource("3_0127o")]

View file

@ -0,0 +1,104 @@
extends Node2D
@onready var positions = $Positions
@onready var collision = $CollisionTest
var lastDirection = null
func getPositions():
return positions.get_children()
func checkDirection():
var leftCollision = true
var rightCollision = true
positions.position.x = 0
collision.position.x = 0
if await getCollidingAreas() != []:
positions.position.x += GLOBAL.GRID
collision.position.x += GLOBAL.GRID
if await getCollidingAreas() == []:
rightCollision = false
else:
rightCollision = true
positions.position.x = 0
collision.position.x = 0
if await getCollidingAreas() != []:
positions.position.x -= GLOBAL.GRID
collision.position.x -= GLOBAL.GRID
if await getCollidingAreas() == []:
leftCollision = false
else:
leftCollision = true
positions.position.x = 0
collision.position.x = 0
if not rightCollision:
positions.position.x += GLOBAL.GRID
collision.position.x += GLOBAL.GRID
elif not leftCollision:
positions.position.x -= GLOBAL.GRID
collision.position.x -= GLOBAL.GRID
else:
positions.position.x = 0
collision.position.x = 0
func turn(direction,newPosition):
positions.position.x = 0
collision.position.x = 0
position = newPosition
match direction:
GLOBAL.Direction.LEFT:
positions.rotation_degrees += 90
collision.rotation_degrees += 90
if await getCollidingAreas() != []:
checkDirection()
if await getCollidingAreas() != []:
positions.rotation_degrees += 90
collision.rotation_degrees += 90
GLOBAL.Direction.RIGHT:
positions.rotation_degrees -= 90
collision.rotation_degrees -= 90
if await getCollidingAreas() != []:
checkDirection()
if await getCollidingAreas() != []:
positions.rotation_degrees -= 90
collision.rotation_degrees -= 90
#positions.rotation_degrees += 90
#collision.rotation_degrees += 90
func getCollidingAreas():
await get_tree().process_frame
await get_tree().process_frame
await get_tree().process_frame
await get_tree().process_frame
var collidingAreas = []
for i in collision.get_overlapping_areas():
if i.is_in_group("Block"):
if i.UID != GLOBAL.currentUID:
collidingAreas.append(i)
else:
collidingAreas.append(i)
return collidingAreas
#func _on_collision_test_area_entered(area: Area2D) -> void:
#if lastDirection == null:
#checkLeft()
#else:
#if lastDirection == GLOBAL.Direction.LEFT:
#print(getCollidingAreas())
#checkRight()
#if lastDirection == GLOBAL.Direction.LEFT:
#print(getCollidingAreas())
#print(collision.get_overlapping_areas())
#print(getCollidingAreas())
#print(checkLeft())
#print(checkRight())
func reset(newPosition):
position = newPosition
positions.position.x = 0
collision.position.x = 0
rotation_degrees = 0

View file

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://7knb2yqvkw6i"]
[ext_resource type="Script" path="res://scenes/Blocks/Patterns/block_pattern.gd" id="1_ne3bj"]
[node name="BlockPattern" type="Node2D"]
script = ExtResource("1_ne3bj")
[node name="Positions" type="Node2D" parent="."]
[node name="CollisionTest" type="Area2D" parent="."]
collision_layer = 8
collision_mask = 3

View file

@ -0,0 +1,3 @@
extends Marker2D
@export var turningPoint = false

View file

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://2v7wok4hnr6c"]
[ext_resource type="Script" path="res://scenes/Blocks/Patterns/position_marker.gd" id="1_775kb"]
[node name="PositionMarker" type="Marker2D"]
script = ExtResource("1_775kb")

88
scenes/Blocks/block.gd Normal file
View file

@ -0,0 +1,88 @@
extends Area2D
@onready var floorRaycast = $RaycastFloor
@onready var raycastLeft = $RaycastLeft
@onready var raycastRight = $RaycastRight
@export var UID = 1
var secretPosition = Vector2()
var turningPoint = false
var type = GLOBAL.BLOCKTYPES.LIGHT
func _ready() -> void:
secretPosition = position
#func _physics_process(delta: float) -> void:
#print(secretPosition)
#print(getNeighbours())
#print(getNeighboursUID(UID))
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _physics_process(delta: float) -> void:
#if not getIsOnFloor():
# position = secretPosition.snapped(Vector2(64,64))
#if Input.is_action_just_pressed("left"):
# if not raycastLeft.is_colliding():
# secretPosition.x -= GLOBAL.GRID
#if Input.is_action_just_pressed("right"):
# if not raycastRight.is_colliding():
# secretPosition.x += GLOBAL.GRID
#secretPosition.y += GLOBAL.currentSpeed * delta * 30
func getIsOnFloor() -> bool:
return floorRaycast.is_colliding()
#func getFloorCollider():
#return floorRaycast.get_collider()
#
#func getLeftCollider():
#return raycastLeft.get_collider()
#
#func getRightCollider():
#return raycastRight.get_collider()
func getLeftColliding() -> bool:
return raycastLeft.is_colliding()
func getRightColliding() -> bool:
return raycastRight.is_colliding()
func getCollider(direction : GLOBAL.Direction):
match direction:
GLOBAL.Direction.BOTTOM:
return floorRaycast.get_collider()
GLOBAL.Direction.LEFT:
return raycastLeft.get_collider()
GLOBAL.Direction.RIGHT:
return raycastRight.get_collider()
func getNeighbours():
var neighbours = []
for i in get_overlapping_areas():
if i.is_in_group("Block"):
neighbours.append(i)
return neighbours
func getNeighboursUID(uid):
var neighbours = []
for i in get_overlapping_areas():
if i.is_in_group("Block"):
if i.UID == uid:
neighbours.append(i)
return neighbours
func move(x,y):
secretPosition = position
secretPosition.x += x
secretPosition.y += y
position = secretPosition.snapped(Vector2(64, 64))
func moveDown():
move(0, 64)
func moveLeft():
move(-64, 0)
func moveRight():
move(64, 0)

43
scenes/Blocks/block.tscn Normal file
View file

@ -0,0 +1,43 @@
[gd_scene load_steps=4 format=3 uid="uid://do8gr42oq2a0y"]
[ext_resource type="Script" path="res://scenes/Blocks/block.gd" id="1_t1hpt"]
[sub_resource type="QuadMesh" id="QuadMesh_lsuac"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_gvev2"]
size = Vector2(80, 80)
[node name="Block" type="Area2D" groups=["Block"]]
collision_layer = 2
collision_mask = 14
script = ExtResource("1_t1hpt")
[node name="MeshInstance2D" type="MeshInstance2D" parent="."]
position = Vector2(31, 31)
scale = Vector2(62, 62)
mesh = SubResource("QuadMesh_lsuac")
[node name="RaycastFloor" type="RayCast2D" parent="."]
position = Vector2(32, 72)
target_position = Vector2(0, 32)
collision_mask = 3
hit_from_inside = true
collide_with_areas = true
[node name="RaycastLeft" type="RayCast2D" parent="."]
position = Vector2(-8, 32)
target_position = Vector2(-32, 0)
collision_mask = 3
hit_from_inside = true
collide_with_areas = true
[node name="RaycastRight" type="RayCast2D" parent="."]
position = Vector2(72, 32)
target_position = Vector2(32, 0)
collision_mask = 3
hit_from_inside = true
collide_with_areas = true
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(32, 32)
shape = SubResource("RectangleShape2D_gvev2")