Stone Texture, Wallslide/Jump, Level One Draft
This commit is contained in:
parent
ce04af9332
commit
61cd57c253
@ -52,9 +52,11 @@ settings/fps/force_fps=144
|
|||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
window/size/width=848
|
window/size/width=1920
|
||||||
window/size/height=480
|
window/size/height=1080
|
||||||
window/stretch/mode="2d"
|
window/stretch/mode="2d"
|
||||||
|
window/stretch/aspect="keep"
|
||||||
|
window/stretch/shrink=4.5
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
@ -102,10 +104,11 @@ boost_move={
|
|||||||
|
|
||||||
quality/intended_usage/framebuffer_allocation=0
|
quality/intended_usage/framebuffer_allocation=0
|
||||||
quality/intended_usage/framebuffer_allocation.mobile=0
|
quality/intended_usage/framebuffer_allocation.mobile=0
|
||||||
quality/2d/use_pixel_snap=true
|
2d/snapping/use_gpu_pixel_snap=true
|
||||||
quality/filters/use_nearest_mipmap_filter=true
|
quality/filters/use_nearest_mipmap_filter=true
|
||||||
quality/filters/msaa=1
|
quality/filters/msaa=1
|
||||||
environment/default_environment="res://default_env.tres"
|
environment/default_environment="res://default_env.tres"
|
||||||
|
quality/2d/use_pixel_snap=true
|
||||||
environment/2d/use_nvidia_rect_flicker_workaround=true
|
environment/2d/use_nvidia_rect_flicker_workaround=true
|
||||||
environment/stretch/aspect="ignore"
|
environment/stretch/aspect="ignore"
|
||||||
environment/intended_usage/framebuffer_allocation.mobile=0
|
environment/intended_usage/framebuffer_allocation.mobile=0
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
extends Player
|
extends Player
|
||||||
|
|
||||||
|
export var init_boost := false
|
||||||
|
onready var wall_touch_direction = 0
|
||||||
|
onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast
|
||||||
|
onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast
|
||||||
|
|
||||||
|
|
||||||
func _on_EnemyDetector_area_entered(area: Area2D) -> void:
|
func _on_EnemyDetector_area_entered(area: Area2D) -> void:
|
||||||
_velocity = calculate_stomp_velocity(_velocity, stomp_feedback)
|
_velocity = calculate_stomp_velocity(_velocity, stomp_feedback)
|
||||||
@ -21,6 +26,10 @@ func handle_fall_movement(delta: float, direction: Vector2) -> Vector2:
|
|||||||
return calculate_fall_velocity(_velocity, delta, direction)
|
return calculate_fall_velocity(_velocity, delta, direction)
|
||||||
|
|
||||||
|
|
||||||
|
func handle_wallslide_movement(delta: float, direction: Vector2) -> Vector2:
|
||||||
|
return calculate_wallslide_velocity(_velocity, delta, direction)
|
||||||
|
|
||||||
|
|
||||||
func calculate_grounded_velocity(
|
func calculate_grounded_velocity(
|
||||||
linear_velocity: Vector2, delta: float, direction: Vector2, state: String
|
linear_velocity: Vector2, delta: float, direction: Vector2, state: String
|
||||||
) -> Vector2:
|
) -> Vector2:
|
||||||
@ -78,8 +87,12 @@ func calculate_grounded_velocity(
|
|||||||
out_vel.x = max_velocity[state] * direction.x
|
out_vel.x = max_velocity[state] * direction.x
|
||||||
# TODO Is this the right place to determine this?
|
# TODO Is this the right place to determine this?
|
||||||
# Jumping when grounded
|
# Jumping when grounded
|
||||||
if is_on_floor() && Input.is_action_pressed("jump"):
|
if is_on_floor() && Input.is_action_just_pressed("jump"):
|
||||||
var additive_jump_force = 0.2383 * abs(_velocity.x) * mass
|
var additive_jump_force = (
|
||||||
|
velocity_jump_boost_ratio
|
||||||
|
* abs(_velocity.x)
|
||||||
|
* mass
|
||||||
|
)
|
||||||
out_vel.y = (
|
out_vel.y = (
|
||||||
((acceleration_force[state].y + additive_jump_force) / mass)
|
((acceleration_force[state].y + additive_jump_force) / mass)
|
||||||
* -1
|
* -1
|
||||||
@ -96,6 +109,30 @@ func is_reversing_horizontal_movement(direction: Vector2) -> bool:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Returns if the character is touching a wall with its whole body
|
||||||
|
# Being able to touch a vertical surface over this length also makes it a qualified "wall"
|
||||||
|
# Also sets wall_touch_direction
|
||||||
|
# TODO Ugly side effect
|
||||||
|
func is_touching_wall_completely() -> bool:
|
||||||
|
for left_raycast in left_wall_raycasts.get_children():
|
||||||
|
wall_touch_direction = -1
|
||||||
|
if ! left_raycast.is_colliding():
|
||||||
|
for right_raycast in right_wall_raycasts.get_children():
|
||||||
|
wall_touch_direction = 1
|
||||||
|
if ! right_raycast.is_colliding():
|
||||||
|
wall_touch_direction = 0
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
|
||||||
|
|
||||||
|
func is_correct_walljump_input(direction: Vector2) -> bool:
|
||||||
|
return (
|
||||||
|
Input.is_action_just_pressed("jump")
|
||||||
|
&& abs(direction.x + wall_touch_direction) < 1
|
||||||
|
&& abs(direction.x + wall_touch_direction) >= 0
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
func convert_velocity_to_force(velocity, mass, delta) -> float:
|
func convert_velocity_to_force(velocity, mass, delta) -> float:
|
||||||
return (velocity * mass) / delta
|
return (velocity * mass) / delta
|
||||||
|
|
||||||
@ -104,8 +141,9 @@ func convert_force_to_velocity(force, mass, delta) -> float:
|
|||||||
return (force / mass) * delta
|
return (force / mass) * delta
|
||||||
|
|
||||||
|
|
||||||
|
# TODO Save this static number somewhere else
|
||||||
func get_ground_friction() -> float:
|
func get_ground_friction() -> float:
|
||||||
return 25.0
|
return 22.0
|
||||||
|
|
||||||
|
|
||||||
# TODO Comments for parameters
|
# TODO Comments for parameters
|
||||||
@ -116,6 +154,11 @@ func calculate_deceleration_force(gravity: float, mass: float, delta: float) ->
|
|||||||
func calculate_jump_velocity(
|
func calculate_jump_velocity(
|
||||||
linear_velocity: Vector2, delta: float, direction: Vector2
|
linear_velocity: Vector2, delta: float, direction: Vector2
|
||||||
) -> Vector2:
|
) -> Vector2:
|
||||||
|
if is_touching_wall_completely() && is_correct_walljump_input(direction):
|
||||||
|
# The faster you are moving up the farther the walljump goes
|
||||||
|
linear_velocity.y = (acceleration_force["walljump"].y / mass) * -1
|
||||||
|
linear_velocity.x += max_velocity["walljump"] * direction.x
|
||||||
|
else:
|
||||||
linear_velocity.y += gravity * delta
|
linear_velocity.y += gravity * delta
|
||||||
if _velocity.x == 0:
|
if _velocity.x == 0:
|
||||||
linear_velocity.x += inair_velocity * direction.x
|
linear_velocity.x += inair_velocity * direction.x
|
||||||
@ -135,6 +178,24 @@ func calculate_fall_velocity(
|
|||||||
return linear_velocity
|
return linear_velocity
|
||||||
|
|
||||||
|
|
||||||
|
func calculate_wallslide_velocity(
|
||||||
|
linear_velocity: Vector2, delta: float, direction: Vector2
|
||||||
|
) -> Vector2:
|
||||||
|
# Walljump mechanics
|
||||||
|
if is_correct_walljump_input(direction):
|
||||||
|
var multiplicator = max(min(1, 1000 / _velocity.y), 0.5)
|
||||||
|
linear_velocity.y += (
|
||||||
|
(acceleration_force["walljump"].y / mass)
|
||||||
|
* -1
|
||||||
|
* multiplicator
|
||||||
|
)
|
||||||
|
linear_velocity.x += max_velocity["walljump"] * direction.x
|
||||||
|
else:
|
||||||
|
linear_velocity.y += gravity * delta * 0.4
|
||||||
|
# linear_velocity.x += inair_velocity * direction.x
|
||||||
|
return linear_velocity
|
||||||
|
|
||||||
|
|
||||||
func calculate_stomp_velocity(linear_velocity: Vector2, impulse: float) -> Vector2:
|
func calculate_stomp_velocity(linear_velocity: Vector2, impulse: float) -> Vector2:
|
||||||
var out := linear_velocity
|
var out := linear_velocity
|
||||||
out.y = -impulse
|
out.y = -impulse
|
||||||
|
|||||||
@ -7,17 +7,16 @@
|
|||||||
[ext_resource path="res://src/Actor/Blobby.gd" type="Script" id=5]
|
[ext_resource path="res://src/Actor/Blobby.gd" type="Script" id=5]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=1]
|
[sub_resource type="RectangleShape2D" id=1]
|
||||||
extents = Vector2( 9.78696, 20.3816 )
|
extents = Vector2( 10.6846, 20.1701 )
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=2]
|
[sub_resource type="RectangleShape2D" id=2]
|
||||||
extents = Vector2( 11.4387, 20.1638 )
|
extents = Vector2( 11.2458, 19.4685 )
|
||||||
|
|
||||||
[node name="Blobby" type="KinematicBody2D"]
|
[node name="Blobby" type="KinematicBody2D"]
|
||||||
collision_mask = 8
|
collision_mask = 8
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
|
|
||||||
[node name="Player" type="Sprite" parent="."]
|
[node name="Player" type="Sprite" parent="."]
|
||||||
scale = Vector2( 0.64, 0.64 )
|
|
||||||
texture = ExtResource( 1 )
|
texture = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
@ -30,7 +29,6 @@ script = ExtResource( 3 )
|
|||||||
script = ExtResource( 4 )
|
script = ExtResource( 4 )
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="."]
|
[node name="Camera2D" type="Camera2D" parent="."]
|
||||||
visible = false
|
|
||||||
position = Vector2( 0, -181 )
|
position = Vector2( 0, -181 )
|
||||||
current = true
|
current = true
|
||||||
limit_left = 0
|
limit_left = 0
|
||||||
@ -54,15 +52,46 @@ shape = SubResource( 2 )
|
|||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
[node name="StateLable" type="Label" parent="."]
|
[node name="StateLable" type="Label" parent="."]
|
||||||
margin_left = -30.7351
|
margin_left = -25.3386
|
||||||
margin_top = -30.3377
|
margin_top = -34.2836
|
||||||
margin_right = 31.2649
|
margin_right = 25.6614
|
||||||
margin_bottom = -14.3377
|
margin_bottom = -20.2836
|
||||||
|
custom_colors/font_color = Color( 0, 0, 0, 1 )
|
||||||
text = "Coochie"
|
text = "Coochie"
|
||||||
align = 1
|
align = 1
|
||||||
valign = 1
|
valign = 1
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="WallRaycasts" type="Node2D" parent="."]
|
||||||
|
|
||||||
|
[node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"]
|
||||||
|
|
||||||
|
[node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
|
||||||
|
position = Vector2( -10.706, -8.03844 )
|
||||||
|
enabled = true
|
||||||
|
cast_to = Vector2( -1, 0 )
|
||||||
|
collision_mask = 9
|
||||||
|
|
||||||
|
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
|
||||||
|
position = Vector2( -10.706, 14.8466 )
|
||||||
|
enabled = true
|
||||||
|
cast_to = Vector2( -1, 0 )
|
||||||
|
collision_mask = 9
|
||||||
|
|
||||||
|
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
|
||||||
|
|
||||||
|
[node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
|
||||||
|
position = Vector2( 10.6962, -8.03844 )
|
||||||
|
enabled = true
|
||||||
|
cast_to = Vector2( 1, 0 )
|
||||||
|
collision_mask = 9
|
||||||
|
|
||||||
|
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
|
||||||
|
position = Vector2( 10.6962, 14.8466 )
|
||||||
|
enabled = true
|
||||||
|
cast_to = Vector2( 1, 0 )
|
||||||
|
collision_mask = 9
|
||||||
[connection signal="area_entered" from="EnemyDetector" to="." method="_on_EnemyDetector_area_entered"]
|
[connection signal="area_entered" from="EnemyDetector" to="." method="_on_EnemyDetector_area_entered"]
|
||||||
[connection signal="body_entered" from="EnemyDetector" to="." method="_on_EnemyDetector_body_entered"]
|
[connection signal="body_entered" from="EnemyDetector" to="." method="_on_EnemyDetector_body_entered"]
|
||||||
|
|||||||
@ -4,16 +4,21 @@ class_name Player
|
|||||||
const FLOOR_NORMAL := Vector2.UP
|
const FLOOR_NORMAL := Vector2.UP
|
||||||
|
|
||||||
export var stomp_feedback := 1000.0
|
export var stomp_feedback := 1000.0
|
||||||
export var init_boost := false
|
export var inair_velocity := 21
|
||||||
export var inair_velocity := 18.3
|
export var wallslide_threshold := 1000
|
||||||
export var max_velocity := {"walk": 183, "run": 305, "fall": 832}
|
export var max_velocity := {
|
||||||
|
"walk": 130, "run": 180, "fall": 987, "walljump": 150
|
||||||
|
}
|
||||||
|
export var velocity_jump_boost_ratio := 0.4383
|
||||||
# This is added to the acceleration force initially
|
# This is added to the acceleration force initially
|
||||||
export var init_acceleration_force := {"walk": 3904, "run": 6506.67}
|
export var init_acceleration_force := {"walk": 4181, "run": 6765}
|
||||||
# newtonmeters is the unit
|
# newtonmeters is the unit
|
||||||
export var acceleration_force := {
|
export var acceleration_force := {
|
||||||
"walk": Vector2(2928, 4575), "run": Vector2(2928, 4575)
|
"walk": Vector2(2584, 2000),
|
||||||
|
"run": Vector2(2584, 2000),
|
||||||
|
"walljump": Vector2(2548, 2000)
|
||||||
}
|
}
|
||||||
export var gravity := 3904.0
|
export var gravity := 1667.0
|
||||||
# Kilograms
|
# Kilograms
|
||||||
export var mass := 6
|
export var mass := 6
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ func _ready():
|
|||||||
add_state("walk")
|
add_state("walk")
|
||||||
add_state("jump")
|
add_state("jump")
|
||||||
add_state("fall")
|
add_state("fall")
|
||||||
|
add_state("wallslide")
|
||||||
print_debug(states)
|
print_debug(states)
|
||||||
set_state(states.idle)
|
set_state(states.idle)
|
||||||
|
|
||||||
@ -36,6 +37,8 @@ func _state_logic(delta):
|
|||||||
handle_input_ref = funcref(self, 'handle_jump_input')
|
handle_input_ref = funcref(self, 'handle_jump_input')
|
||||||
"fall":
|
"fall":
|
||||||
handle_input_ref = funcref(self, 'handle_fall_input')
|
handle_input_ref = funcref(self, 'handle_fall_input')
|
||||||
|
"wallslide":
|
||||||
|
handle_input_ref = funcref(self, 'handle_wallslide_input')
|
||||||
_:
|
_:
|
||||||
print("don't panik")
|
print("don't panik")
|
||||||
|
|
||||||
@ -66,6 +69,10 @@ func handle_fall_input(delta, direction := get_horizontal_direction()) -> Vector
|
|||||||
return parent.handle_fall_movement(delta, direction)
|
return parent.handle_fall_movement(delta, direction)
|
||||||
|
|
||||||
|
|
||||||
|
func handle_wallslide_input(delta, direction := get_horizontal_direction()) -> Vector2:
|
||||||
|
return parent.handle_wallslide_movement(delta, direction)
|
||||||
|
|
||||||
|
|
||||||
func get_horizontal_direction() -> Vector2:
|
func get_horizontal_direction() -> Vector2:
|
||||||
return Vector2(
|
return Vector2(
|
||||||
(
|
(
|
||||||
@ -84,7 +91,6 @@ func _get_transition(delta):
|
|||||||
+ String(round(parent._velocity.x))
|
+ String(round(parent._velocity.x))
|
||||||
)
|
)
|
||||||
var new_state
|
var new_state
|
||||||
# TODO Can get stuck in Fall on ledges
|
|
||||||
if ! parent.is_on_floor():
|
if ! parent.is_on_floor():
|
||||||
if parent._velocity.y < 0:
|
if parent._velocity.y < 0:
|
||||||
new_state = states.jump
|
new_state = states.jump
|
||||||
@ -92,11 +98,18 @@ func _get_transition(delta):
|
|||||||
# if self.state == states.run:
|
# if self.state == states.run:
|
||||||
# parent._velocity.y = 0
|
# parent._velocity.y = 0
|
||||||
new_state = states.fall
|
new_state = states.fall
|
||||||
|
if (
|
||||||
|
parent.is_touching_wall_completely()
|
||||||
|
&& parent._velocity.y <= parent.wallslide_threshold
|
||||||
|
):
|
||||||
|
new_state = states.wallslide
|
||||||
|
|
||||||
elif parent._velocity.x != 0:
|
elif parent._velocity.x != 0:
|
||||||
if Input.is_action_pressed("boost_move"):
|
if Input.is_action_pressed("boost_move"):
|
||||||
new_state = states.run
|
new_state = states.run
|
||||||
else:
|
else:
|
||||||
new_state = states.walk
|
new_state = states.walk
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# TODO How does this apply to enviornment induced movement?
|
# TODO How does this apply to enviornment induced movement?
|
||||||
new_state = states.idle
|
new_state = states.idle
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -58,7 +58,6 @@ tile_data = PoolIntArray( 0, 0, 0, 65536, 0, 0, 131072, 0, 0, 196608, 0, 0, 2621
|
|||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 1 )]
|
[node name="Blobby" parent="." instance=ExtResource( 1 )]
|
||||||
position = Vector2( 131, 560 )
|
position = Vector2( 131, 560 )
|
||||||
speed = Vector2( 800, 1000 )
|
|
||||||
gravity = 4000.0
|
gravity = 4000.0
|
||||||
|
|
||||||
[node name="Camera2D" parent="Blobby" index="2"]
|
[node name="Camera2D" parent="Blobby" index="2"]
|
||||||
@ -83,5 +82,4 @@ position = Vector2( 0, 3 )
|
|||||||
position = Vector2( 749, 274 )
|
position = Vector2( 749, 274 )
|
||||||
|
|
||||||
[editable path="Blobby"]
|
[editable path="Blobby"]
|
||||||
|
|
||||||
[editable path="Coin"]
|
[editable path="Coin"]
|
||||||
|
|||||||
@ -40,9 +40,6 @@ tile_data = PoolIntArray( -1048576, 0, 0, -1048564, 0, 0, -983040, 0, 0, -983028
|
|||||||
[node name="Blobby" parent="." instance=ExtResource( 1 )]
|
[node name="Blobby" parent="." instance=ExtResource( 1 )]
|
||||||
position = Vector2( 131, 560 )
|
position = Vector2( 131, 560 )
|
||||||
|
|
||||||
[node name="player" parent="Blobby" index="0"]
|
|
||||||
position = Vector2( 0, -32 )
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" parent="Blobby" index="1"]
|
[node name="CollisionShape2D" parent="Blobby" index="1"]
|
||||||
position = Vector2( 0.224487, -32.0436 )
|
position = Vector2( 0.224487, -32.0436 )
|
||||||
|
|
||||||
|
|||||||
@ -1,82 +0,0 @@
|
|||||||
[gd_scene load_steps=9 format=2]
|
|
||||||
|
|
||||||
[ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1]
|
|
||||||
[ext_resource path="res://start-assets/tileset.tres" type="TileSet" id=2]
|
|
||||||
[ext_resource path="res://src/Actor/Enemy.tscn" type="PackedScene" id=3]
|
|
||||||
[ext_resource path="res://start-assets/background.png" type="Texture" id=4]
|
|
||||||
[ext_resource path="res://src/Objects/Coin.tscn" type="PackedScene" id=5]
|
|
||||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6]
|
|
||||||
[ext_resource path="res://src/UserInterface/EndsScreen.tscn" type="PackedScene" id=7]
|
|
||||||
[ext_resource path="res://src/Objects/Portal.tscn" type="PackedScene" id=8]
|
|
||||||
|
|
||||||
[node name="Level03" type="Node2D"]
|
|
||||||
|
|
||||||
[node name="UserInterface" type="CanvasLayer" parent="."]
|
|
||||||
|
|
||||||
[node name="UserInterface" parent="UserInterface" instance=ExtResource( 6 )]
|
|
||||||
|
|
||||||
[node name="BackgroundLayer" type="CanvasLayer" parent="."]
|
|
||||||
layer = -1
|
|
||||||
|
|
||||||
[node name="background" type="TextureRect" parent="BackgroundLayer"]
|
|
||||||
anchor_right = 1.016
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
margin_right = -0.384033
|
|
||||||
texture = ExtResource( 4 )
|
|
||||||
expand = true
|
|
||||||
stretch_mode = 1
|
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="TileMap" type="TileMap" parent="."]
|
|
||||||
tile_set = ExtResource( 2 )
|
|
||||||
cell_size = Vector2( 80, 80 )
|
|
||||||
collision_layer = 8
|
|
||||||
collision_mask = 0
|
|
||||||
format = 1
|
|
||||||
tile_data = PoolIntArray( -1048576, 0, 0, -1048564, 0, 0, -983040, 0, 0, -983028, 0, 0, -917504, 0, 0, -917492, 0, 0, -851968, 0, 0, -851956, 0, 0, -786432, 0, 0, -786420, 0, 0, -720896, 0, 0, -720884, 0, 0, -655360, 0, 0, -655348, 0, 0, -589824, 0, 0, -589812, 0, 0, -524288, 0, 0, -524276, 0, 0, -458752, 0, 0, -458740, 0, 0, -393216, 0, 0, -393215, 0, 0, -393214, 0, 0, -393213, 0, 0, -393204, 0, 0, -327680, 0, 0, -327668, 0, 0, -262144, 0, 0, -262132, 0, 0, -196608, 0, 0, -196607, 0, 0, -196606, 0, 0, -196605, 0, 0, -196596, 0, 0, -131072, 0, 0, -131060, 0, 0, -65536, 0, 0, -65524, 0, 0, 0, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 12, 0, 0, 65536, 0, 0, 65544, 0, 0, 65548, 0, 0, 131072, 0, 0, 131084, 0, 0, 196608, 0, 0, 196620, 0, 0, 262144, 0, 0, 262149, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 327680, 0, 0, 327681, 0, 0, 327692, 0, 0, 393216, 0, 0, 393228, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0 )
|
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 1 )]
|
|
||||||
position = Vector2( 300, 560 )
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" parent="Blobby" index="1"]
|
|
||||||
position = Vector2( 0.224487, -32.0436 )
|
|
||||||
|
|
||||||
[node name="Camera2D" parent="Blobby" index="2"]
|
|
||||||
position = Vector2( 390.714, -75 )
|
|
||||||
limit_top = -10000
|
|
||||||
limit_right = 1040
|
|
||||||
limit_bottom = 700
|
|
||||||
drag_margin_h_enabled = false
|
|
||||||
smoothing_enabled = false
|
|
||||||
editor_draw_limits = true
|
|
||||||
|
|
||||||
[node name="EnemyDetector" parent="Blobby" index="3"]
|
|
||||||
position = Vector2( 14.6832, -44.0497 )
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" parent="Blobby/EnemyDetector" index="0"]
|
|
||||||
position = Vector2( -14.4587, 12.8269 )
|
|
||||||
|
|
||||||
[node name="Enemy" parent="." instance=ExtResource( 3 )]
|
|
||||||
position = Vector2( 715.5, 560 )
|
|
||||||
|
|
||||||
[node name="Coin" parent="." instance=ExtResource( 5 )]
|
|
||||||
position = Vector2( 592, 352 )
|
|
||||||
|
|
||||||
[node name="coin" parent="Coin" index="0"]
|
|
||||||
position = Vector2( 0, 3 )
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" parent="Coin" index="1"]
|
|
||||||
position = Vector2( 0, 3 )
|
|
||||||
|
|
||||||
[node name="Coin2" parent="." instance=ExtResource( 5 )]
|
|
||||||
position = Vector2( 749, 274 )
|
|
||||||
|
|
||||||
[node name="Portal" parent="." instance=ExtResource( 8 )]
|
|
||||||
position = Vector2( 130.332, -461.479 )
|
|
||||||
next_scene = ExtResource( 7 )
|
|
||||||
|
|
||||||
[editable path="Blobby"]
|
|
||||||
|
|
||||||
[editable path="Coin"]
|
|
||||||
@ -1,12 +1,14 @@
|
|||||||
[gd_scene load_steps=10 format=2]
|
[gd_scene load_steps=13 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://start-assets/tileset.png" type="Texture" id=2]
|
[ext_resource path="res://start-assets/tileset.png" type="Texture" id=2]
|
||||||
[ext_resource path="res://src/Actor/Enemy.tscn" type="PackedScene" id=3]
|
[ext_resource path="res://src/Actor/Enemy.tscn" type="PackedScene" id=3]
|
||||||
[ext_resource path="res://start-assets/background.png" type="Texture" id=4]
|
[ext_resource path="res://start-assets/background.png" type="Texture" id=4]
|
||||||
[ext_resource path="res://src/Objects/Coin.tscn" type="PackedScene" id=5]
|
[ext_resource path="res://src/Objects/Coin.tscn" type="PackedScene" id=5]
|
||||||
[ext_resource path="res://src/Levels/Level03.tscn" type="PackedScene" id=6]
|
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6]
|
||||||
[ext_resource path="res://src/Objects/Portal.tscn" type="PackedScene" id=7]
|
[ext_resource path="res://src/Objects/Portal.tscn" type="PackedScene" id=7]
|
||||||
|
[ext_resource path="res://src/UserInterface/EndsScreen.tscn" type="PackedScene" id=8]
|
||||||
|
[ext_resource path="res://start-assets/tileset.tres" type="TileSet" id=9]
|
||||||
|
|
||||||
[sub_resource type="ConvexPolygonShape2D" id=1]
|
[sub_resource type="ConvexPolygonShape2D" id=1]
|
||||||
points = PoolVector2Array( 0, 0, 80, 0, 80, 80, 0, 80 )
|
points = PoolVector2Array( 0, 0, 80, 0, 80, 80, 0, 80 )
|
||||||
@ -34,6 +36,21 @@ points = PoolVector2Array( 0, 0, 80, 0, 80, 80, 0, 80 )
|
|||||||
} ]
|
} ]
|
||||||
0/z_index = 0
|
0/z_index = 0
|
||||||
|
|
||||||
|
[sub_resource type="PackedScene" id=3]
|
||||||
|
_bundled = {
|
||||||
|
"conn_count": 0,
|
||||||
|
"conns": PoolIntArray( ),
|
||||||
|
"editable_instances": [ NodePath("Blobby"), NodePath("Coin") ],
|
||||||
|
"names": PoolStringArray( "Level03", "Node2D", "UserInterface", "CanvasLayer", "UserInterface", "BackgroundLayer", "CanvasLayer", "layer", "background", "TextureRect", "anchor_right", "anchor_bottom", "margin_right", "texture", "expand", "stretch_mode", "__meta__", "TileMap", "TileMap", "tile_set", "cell_size", "collision_layer", "collision_mask", "format", "tile_data", "Blobby", "position", "player", "position", "CollisionShape2D", "position", "Camera2D", "position", "limit_top", "limit_right", "limit_bottom", "drag_margin_h_enabled", "smoothing_enabled", "editor_draw_limits", "EnemyDetector", "position", "CollisionShape2D", "position", "Enemy", "position", "Coin", "position", "coin", "position", "CollisionShape2D", "position", "Coin2", "position", "Portal", "position", "next_scene" ),
|
||||||
|
"node_count": 18,
|
||||||
|
"node_paths": [ NodePath("."), NodePath("./UserInterface"), NodePath("."), NodePath("./BackgroundLayer"), NodePath("."), NodePath("."), NodePath("./Blobby"), NodePath("./Blobby"), NodePath("./Blobby"), NodePath("./Blobby"), NodePath("./Blobby/EnemyDetector"), NodePath("."), NodePath("."), NodePath("./Coin"), NodePath("./Coin"), NodePath("."), NodePath(".") ],
|
||||||
|
"nodes": PoolIntArray( -1, -1, 1, 0, -1, 0, 0, 1073741824, 0, 3, 2, -1, 0, 0, 1073741825, 0, 2147483647, 4, 0, 0, 0, 1073741826, 0, 6, 5, -1, 1, 7, 1, 0, 1073741827, 0, 9, 8, -1, 7, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 1073741828, 0, 18, 17, -1, 6, 19, 9, 20, 10, 21, 11, 22, 12, 23, 13, 24, 14, 0, 1073741829, 0, 2147483647, 25, 15, 1, 26, 16, 0, 1073741830, -1, 2147483647, 262171, -1, 1, 28, 17, 0, 1073741831, -1, 2147483647, 524317, -1, 1, 30, 18, 0, 1073741832, -1, 2147483647, 786463, -1, 7, 32, 19, 33, 20, 34, 21, 35, 22, 36, 23, 37, 24, 38, 25, 0, 1073741833, -1, 2147483647, 1048615, -1, 1, 40, 26, 0, 1073741834, -1, 2147483647, 262185, -1, 1, 42, 27, 0, 1073741835, 0, 2147483647, 43, 28, 1, 44, 29, 0, 1073741836, 0, 2147483647, 45, 30, 1, 46, 31, 0, 1073741837, -1, 2147483647, 262191, -1, 1, 48, 32, 0, 1073741838, -1, 2147483647, 524337, -1, 1, 50, 33, 0, 1073741839, 0, 2147483647, 51, 34, 1, 52, 35, 0, 1073741840, 0, 2147483647, 53, 36, 2, 54, 37, 55, 38, 0 ),
|
||||||
|
"variants": [ ExtResource( 6 ), -1, 1.016, 1.0, -0.384033, ExtResource( 4 ), true, 1, {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}, ExtResource( 9 ), Vector2( 80, 80 ), 8, 0, 1, PoolIntArray( -1048576, 0, 0, -1048564, 0, 0, -983040, 0, 0, -983028, 0, 0, -917504, 0, 0, -917492, 0, 0, -851968, 0, 0, -851956, 0, 0, -786432, 0, 0, -786420, 0, 0, -720896, 0, 0, -720884, 0, 0, -655360, 0, 0, -655348, 0, 0, -589824, 0, 0, -589812, 0, 0, -524288, 0, 0, -524276, 0, 0, -458752, 0, 0, -458740, 0, 0, -393216, 0, 0, -393215, 0, 0, -393214, 0, 0, -393213, 0, 0, -393204, 0, 0, -327680, 0, 0, -327668, 0, 0, -262144, 0, 0, -262132, 0, 0, -196608, 0, 0, -196607, 0, 0, -196606, 0, 0, -196605, 0, 0, -196596, 0, 0, -131072, 0, 0, -131060, 0, 0, -65536, 0, 0, -65524, 0, 0, 0, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 12, 0, 0, 65536, 0, 0, 65544, 0, 0, 65548, 0, 0, 131072, 0, 0, 131084, 0, 0, 196608, 0, 0, 196620, 0, 0, 262144, 0, 0, 262149, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 327680, 0, 0, 327681, 0, 0, 327692, 0, 0, 393216, 0, 0, 393228, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0 ), ExtResource( 1 ), Vector2( 131, 560 ), Vector2( 0, -32 ), Vector2( 0.224487, -32.0436 ), Vector2( 390.714, -75 ), -10000, 1040, 700, false, false, true, Vector2( 14.6832, -44.0497 ), Vector2( -15.3507, 14.3845 ), ExtResource( 3 ), Vector2( 715.5, 560 ), ExtResource( 5 ), Vector2( 592, 352 ), Vector2( 0, 3 ), Vector2( 0, 3 ), ExtResource( 5 ), Vector2( 749, 274 ), ExtResource( 7 ), Vector2( 130.332, -461.479 ), ExtResource( 8 ) ],
|
||||||
|
"version": 2
|
||||||
|
}
|
||||||
|
|
||||||
[node name="LevelTemplate" type="Node2D"]
|
[node name="LevelTemplate" type="Node2D"]
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_horizontal_guides_": [ 464.0 ],
|
"_edit_horizontal_guides_": [ 464.0 ],
|
||||||
@ -90,7 +107,7 @@ position = Vector2( 445, 199 )
|
|||||||
|
|
||||||
[node name="Portal" parent="." instance=ExtResource( 7 )]
|
[node name="Portal" parent="." instance=ExtResource( 7 )]
|
||||||
position = Vector2( 131, 339 )
|
position = Vector2( 131, 339 )
|
||||||
next_scene = ExtResource( 6 )
|
next_scene = SubResource( 3 )
|
||||||
|
|
||||||
[editable path="Blobby"]
|
[editable path="Blobby"]
|
||||||
|
|
||||||
|
|||||||
@ -9,12 +9,22 @@
|
|||||||
[node name="MainScreen" type="Control"]
|
[node name="MainScreen" type="Control"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
margin_right = -1493.33
|
||||||
|
margin_bottom = -840.0
|
||||||
theme = ExtResource( 5 )
|
theme = ExtResource( 5 )
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="background" type="TextureRect" parent="."]
|
[node name="ViewportContainer" type="ViewportContainer" parent="."]
|
||||||
|
margin_right = 426.667
|
||||||
|
margin_bottom = 240.0
|
||||||
|
stretch = true
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="background" type="TextureRect" parent="ViewportContainer"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
texture = ExtResource( 4 )
|
texture = ExtResource( 4 )
|
||||||
@ -24,39 +34,38 @@ __meta__ = {
|
|||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="Titel" parent="." instance=ExtResource( 2 )]
|
[node name="Titel" parent="ViewportContainer" instance=ExtResource( 2 )]
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
margin_left = -165.023
|
margin_left = -83.3335
|
||||||
margin_top = 60.2735
|
margin_right = 91.6665
|
||||||
margin_right = 159.977
|
margin_bottom = 85.0
|
||||||
margin_bottom = 145.273
|
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
size_flags_horizontal = 2
|
size_flags_horizontal = 2
|
||||||
size_flags_vertical = 2
|
size_flags_vertical = 2
|
||||||
text = "Wumper"
|
text = "poṣa"
|
||||||
|
|
||||||
[node name="MenuContainer" type="VBoxContainer" parent="."]
|
[node name="MenuContainer" type="VBoxContainer" parent="ViewportContainer"]
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
margin_left = -73.0
|
margin_left = -43.3335
|
||||||
margin_top = -80.5
|
margin_right = 53.6665
|
||||||
margin_right = 73.0
|
margin_bottom = 81.0
|
||||||
margin_bottom = 80.5
|
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="PlayButton" parent="MenuContainer" instance=ExtResource( 3 )]
|
[node name="PlayButton" parent="ViewportContainer/MenuContainer" instance=ExtResource( 3 )]
|
||||||
margin_right = 146.0
|
margin_right = 97.0
|
||||||
|
margin_bottom = 38.0
|
||||||
next_scene_path = "res://src/Levels/ApproxLevel.tscn"
|
next_scene_path = "res://src/Levels/ApproxLevel.tscn"
|
||||||
|
|
||||||
[node name="QuitButton" parent="MenuContainer" instance=ExtResource( 1 )]
|
[node name="QuitButton" parent="ViewportContainer/MenuContainer" instance=ExtResource( 1 )]
|
||||||
anchor_left = 0.0
|
anchor_left = 0.0
|
||||||
anchor_right = 0.0
|
anchor_right = 0.0
|
||||||
margin_left = 0.0
|
margin_left = 0.0
|
||||||
margin_top = 82.0
|
margin_top = 42.0
|
||||||
margin_right = 146.0
|
margin_right = 97.0
|
||||||
margin_bottom = 161.0
|
margin_bottom = 81.0
|
||||||
|
|||||||
BIN
start-assets/Basic stone block.png
Normal file
BIN
start-assets/Basic stone block.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 249 B |
34
start-assets/Basic stone block.png.import
Normal file
34
start-assets/Basic stone block.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/Basic stone block.png-cb4ca55f71cbc16699bc7d20b5c1b78f.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://start-assets/Basic stone block.png"
|
||||||
|
dest_files=[ "res://.import/Basic stone block.png-cb4ca55f71cbc16699bc7d20b5c1b78f.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
||||||
Loading…
Reference in New Issue
Block a user