Started working on a floaty field
This commit is contained in:
@@ -3,13 +3,24 @@ class_name BoxBoy extends CharacterBody2D
|
|||||||
@onready var _sprite = $AnimatedSprite2D
|
@onready var _sprite = $AnimatedSprite2D
|
||||||
|
|
||||||
const MOVE_FORCE: int = 300
|
const MOVE_FORCE: int = 300
|
||||||
const JUMP_FORCE: int = 800
|
const JUMP_FORCE: int = 500 #about 4 tiles
|
||||||
|
|
||||||
const GRAVITY_UP: int = 15
|
const GRAVITY_RISING: int = 15
|
||||||
const GRAVITY_DOWN: int = 30
|
const GRAVITY_FALLING: int = 30
|
||||||
|
|
||||||
|
#bouncy platform
|
||||||
|
const BOUNCE_FORCE: int = -820 #about 10 tiles
|
||||||
|
var just_bounced: bool = false #allow max bounce height (i.e. ignore jump input)
|
||||||
|
|
||||||
|
#floaty field
|
||||||
|
const FLOATY_RISING: int = -10
|
||||||
|
const FLOATY_FALLING: int = -30
|
||||||
|
var floaty_counter: int = 0
|
||||||
|
|
||||||
|
#limits
|
||||||
const MAX_MOVE_SPEED: int = 300
|
const MAX_MOVE_SPEED: int = 300
|
||||||
const MAX_FALL_SPEED: int = 500
|
const MAX_FALL_SPEED: int = 500
|
||||||
|
const MAX_FLOATY_SPEED: int = -300
|
||||||
|
|
||||||
#boilerplate
|
#boilerplate
|
||||||
func _ready():
|
func _ready():
|
||||||
@@ -17,19 +28,31 @@ func _ready():
|
|||||||
|
|
||||||
#movement
|
#movement
|
||||||
func _physics_process(_delta) -> void:
|
func _physics_process(_delta) -> void:
|
||||||
#input, jumps
|
#jump input
|
||||||
if is_on_floor() and Input.is_action_just_pressed("input_jump"):
|
if is_on_floor() and Input.is_action_just_pressed("input_jump"):
|
||||||
velocity.y -= JUMP_FORCE
|
velocity.y -= JUMP_FORCE
|
||||||
|
|
||||||
|
if floaty_counter > 0:
|
||||||
|
#inverted - could tweak the rise?
|
||||||
|
if is_rising():
|
||||||
|
velocity.y += FLOATY_RISING
|
||||||
|
else:
|
||||||
|
velocity.y += FLOATY_FALLING
|
||||||
#fall faster than you rise
|
#fall faster than you rise
|
||||||
if is_airborne_rising() and Input.is_action_pressed("input_jump"):
|
elif is_rising() and (Input.is_action_pressed("input_jump") or just_bounced):
|
||||||
velocity.y += GRAVITY_UP
|
velocity.y += GRAVITY_RISING
|
||||||
else:
|
else:
|
||||||
velocity.y += GRAVITY_DOWN
|
velocity.y += GRAVITY_FALLING
|
||||||
|
just_bounced = false
|
||||||
|
|
||||||
if is_airborne_falling() and velocity.y > MAX_FALL_SPEED:
|
#terminal velocity
|
||||||
|
if floaty_counter > 0:
|
||||||
|
if velocity.y < MAX_FLOATY_SPEED:
|
||||||
|
velocity.y = MAX_FLOATY_SPEED
|
||||||
|
elif is_falling() and velocity.y > MAX_FALL_SPEED:
|
||||||
velocity.y = MAX_FALL_SPEED
|
velocity.y = MAX_FALL_SPEED
|
||||||
|
|
||||||
|
print(velocity.y)
|
||||||
#input, walking
|
#input, walking
|
||||||
var move_dir = Input.get_axis("input_left", "input_right")
|
var move_dir = Input.get_axis("input_left", "input_right")
|
||||||
|
|
||||||
@@ -55,10 +78,19 @@ func _on_animation_finished() -> void:
|
|||||||
_sprite.play("idle", 2)
|
_sprite.play("idle", 2)
|
||||||
|
|
||||||
#utils
|
#utils
|
||||||
func is_airborne() -> bool: return !is_on_floor()
|
#func is_airborne() -> bool: return !is_on_floor()
|
||||||
func is_airborne_rising() -> bool: return !is_on_floor() and velocity.y < 0
|
func is_rising() -> bool: return velocity.y < 0
|
||||||
func is_airborne_falling() -> bool: return !is_on_floor() and velocity.y >= 0
|
func is_falling() -> bool: return velocity.y >= 0
|
||||||
|
|
||||||
#external actions
|
#external actions
|
||||||
func apply_bounce() -> void:
|
func apply_bounce() -> void:
|
||||||
velocity.y -= JUMP_FORCE
|
velocity.y = BOUNCE_FORCE
|
||||||
|
just_bounced = true
|
||||||
|
|
||||||
|
func enable_float() -> void:
|
||||||
|
floaty_counter += 1
|
||||||
|
pass
|
||||||
|
|
||||||
|
func disable_float() -> void:
|
||||||
|
floaty_counter -= 1
|
||||||
|
pass
|
||||||
|
|||||||
@@ -19,11 +19,14 @@ size = Vector2(32, 16)
|
|||||||
|
|
||||||
[node name="Bouncy" type="Area2D"]
|
[node name="Bouncy" type="Area2D"]
|
||||||
script = ExtResource("1_uccqy")
|
script = ExtResource("1_uccqy")
|
||||||
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||||
sprite_frames = SubResource("SpriteFrames_npa0g")
|
sprite_frames = SubResource("SpriteFrames_npa0g")
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
shape = SubResource("RectangleShape2D_qqmjc")
|
shape = SubResource("RectangleShape2D_qqmjc")
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||||
|
|||||||
34
platforms/Floaty.tscn
Normal file
34
platforms/Floaty.tscn
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[gd_scene load_steps=5 format=3 uid="uid://8gd74f7ltuwk"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://6xvc47rc3xnp" path="res://platforms/floaty.gd" id="1_nilcs"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://uo0dn2kbqhh8" path="res://platforms/floaty.png" id="1_tt70t"]
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_nilcs"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": ExtResource("1_tt70t")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cftfe"]
|
||||||
|
size = Vector2(64, 64)
|
||||||
|
|
||||||
|
[node name="Floaty" type="Area2D"]
|
||||||
|
script = ExtResource("1_nilcs")
|
||||||
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||||
|
z_index = -100
|
||||||
|
sprite_frames = SubResource("SpriteFrames_nilcs")
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
shape = SubResource("RectangleShape2D_cftfe")
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||||
|
[connection signal="body_exited" from="." to="." method="_on_body_exited"]
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
extends Area2D
|
extends Area2D
|
||||||
|
|
||||||
func _on_body_entered(body) -> void:
|
func _on_body_entered(body) -> void:
|
||||||
print("collision")
|
#print("collision")
|
||||||
if body is BoxBoy:
|
if body is BoxBoy:
|
||||||
body.apply_bounce()
|
body.apply_bounce()
|
||||||
|
|||||||
Binary file not shown.
10
platforms/floaty.gd
Normal file
10
platforms/floaty.gd
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
extends Area2D
|
||||||
|
|
||||||
|
func _on_body_entered(body) -> void:
|
||||||
|
#print("collision")
|
||||||
|
if body is BoxBoy:
|
||||||
|
body.enable_float()
|
||||||
|
|
||||||
|
func _on_body_exited(body) -> void:
|
||||||
|
if body is BoxBoy:
|
||||||
|
body.disable_float()
|
||||||
1
platforms/floaty.gd.uid
Normal file
1
platforms/floaty.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://6xvc47rc3xnp
|
||||||
BIN
platforms/floaty.png
Normal file
BIN
platforms/floaty.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
40
platforms/floaty.png.import
Normal file
40
platforms/floaty.png.import
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://uo0dn2kbqhh8"
|
||||||
|
path="res://.godot/imported/floaty.png-42918432e8e7ab00ea08963791112ec0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://platforms/floaty.png"
|
||||||
|
dest_files=["res://.godot/imported/floaty.png-42918432e8e7ab00ea08963791112ec0.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
BIN
platforms/floaty.xcf
Normal file
BIN
platforms/floaty.xcf
Normal file
Binary file not shown.
@@ -15,11 +15,6 @@ run/main_scene="res://scene.tscn"
|
|||||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
[display]
|
|
||||||
|
|
||||||
window/size/viewport_width=800
|
|
||||||
window/size/viewport_height=600
|
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
input_right={
|
input_right={
|
||||||
|
|||||||
17
scene.tscn
17
scene.tscn
@@ -1,9 +1,10 @@
|
|||||||
[gd_scene load_steps=11 format=4 uid="uid://b7ndmr6uvnyqb"]
|
[gd_scene load_steps=12 format=4 uid="uid://b7ndmr6uvnyqb"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://ddl0kxl0inw6r" path="res://tiles/atlas.png" id="1_3253y"]
|
[ext_resource type="Texture2D" uid="uid://ddl0kxl0inw6r" path="res://tiles/atlas.png" id="1_3253y"]
|
||||||
[ext_resource type="Script" uid="uid://c2x51mppxugpn" path="res://boxboy/boxboy.gd" id="1_nxogm"]
|
[ext_resource type="Script" uid="uid://c2x51mppxugpn" path="res://boxboy/boxboy.gd" id="1_nxogm"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bpjhq0b2dae1d" path="res://boxboy/boxboy.png" id="1_ulcgi"]
|
[ext_resource type="Texture2D" uid="uid://bpjhq0b2dae1d" path="res://boxboy/boxboy.png" id="1_ulcgi"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b1hpr05b5sgww" path="res://platforms/Bouncy.tscn" id="4_u3cyc"]
|
[ext_resource type="PackedScene" uid="uid://b1hpr05b5sgww" path="res://platforms/Bouncy.tscn" id="4_u3cyc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://8gd74f7ltuwk" path="res://platforms/Floaty.tscn" id="5_m7jmp"]
|
||||||
|
|
||||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u3cyc"]
|
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u3cyc"]
|
||||||
texture = ExtResource("1_3253y")
|
texture = ExtResource("1_3253y")
|
||||||
@@ -57,24 +58,30 @@ height = 32.0
|
|||||||
[node name="Node2D" type="Node2D"]
|
[node name="Node2D" type="Node2D"]
|
||||||
|
|
||||||
[node name="TileMapLayer" type="TileMapLayer" parent="."]
|
[node name="TileMapLayer" type="TileMapLayer" parent="."]
|
||||||
position = Vector2(117, 76)
|
tile_map_data = PackedByteArray("AAD9/w0ABAAAAAAAAAD9/w4ABAABAAAAAAD9/w8ABAABAAAAAAD+/w0ABAAAAAAAAAD+/w4ABAABAAAAAAD+/w8ABAABAAAAAAD//w0ABAAAAAAAAAD//w4ABAABAAAAAAD//w8ABAABAAAAAAAAAA0ABAAAAAAAAAAAAA4ABAABAAAAAAAAAA8ABAABAAAAAAABAA0ABAAAAAAAAAABAA4ABAABAAAAAAABAA8ABAABAAAAAAACAA0ABAAAAAAAAAACAA4ABAABAAAAAAACAA8ABAABAAAAAAADAA0ABAAAAAAAAAADAA4ABAABAAAAAAADAA8ABAABAAAAAAAEAA0ABAAAAAAAAAAEAA4ABAABAAAAAAAEAA8ABAABAAAAAAAFAA0ABAAAAAAAAAAFAA4ABAABAAAAAAAFAA8ABAABAAAAAAAGAA0ABAAAAAAAAAAGAA4ABAABAAAAAAAGAA8ABAABAAAAAAAHAA0ABAAAAAAAAAAHAA4ABAABAAAAAAAHAA8ABAABAAAAAAAIAA0ABAAAAAAAAAAIAA4ABAABAAAAAAAIAA8ABAABAAAAAAAJAA0ABAAAAAAAAAAJAA4ABAABAAAAAAAJAA8ABAABAAAAAAAKAA0ABAAAAAAAAAAKAA4ABAABAAAAAAAKAA8ABAABAAAAAAALAA0ABAAAAAAAAAALAA4ABAABAAAAAAALAA8ABAABAAAAAAAMAA0ABAAAAAAAAAAMAA4ABAABAAAAAAAMAA8ABAABAAAAAAANAA0ABAAAAAAAAAANAA4ABAABAAAAAAANAA8ABAABAAAAAAAOAA0ABAAAAAAAAAAOAA4ABAABAAAAAAAOAA8ABAABAAAAAAAPAA0ABAAAAAAAAAAPAA4ABAABAAAAAAAPAA8ABAABAAAAAAAQAA4ABAABAAAAAAAQAA8ABAABAAAAAAARAA0ABAAAAAAAAAARAA4ABAABAAAAAAARAA8ABAABAAAAAAASAA0ABAAAAAAAAAASAA4ABAABAAAAAAASAA8ABAABAAAAAAATAA0ABAAAAAAAAAATAA4ABAABAAAAAAATAA8ABAABAAAAAAAUAA0ABAAAAAAAAAAUAA4ABAABAAAAAAAUAA8ABAABAAAAAAAVAA0ABAAAAAAAAAAVAA4ABAABAAAAAAAVAA8ABAABAAAAAAAWAA0ABAAAAAAAAAAWAA4ABAABAAAAAAAWAA8ABAABAAAAAAAXAA0ABAAAAAAAAAAXAA4ABAABAAAAAAAXAA8ABAABAAAAAAAYAA0ABAAAAAAAAAAYAA4ABAABAAAAAAAYAA8ABAABAAAAAAAZAA0ABAAAAAAAAAAZAA4ABAABAAAAAAAZAA8ABAABAAAAAAAaAA0ABAAAAAAAAAAaAA4ABAABAAAAAAAaAA8ABAABAAAAAAAbAA0ABAAAAAAAAAAbAA4ABAABAAAAAAAbAA8ABAABAAAAAAAcAA0ABAAAAAAAAAAcAA4ABAABAAAAAAAcAA8ABAABAAAAAAAdAA0ABAAAAAAAAAAdAA4ABAABAAAAAAAdAA8ABAABAAAAAAAeAA0ABAAAAAAAAAAeAA4ABAABAAAAAAAeAA8ABAABAAAAAAAfAA0ABAAAAAAAAAAfAA4ABAABAAAAAAAfAA8ABAABAAAAAAD9/xAABAABAAAAAAD+/xAABAABAAAAAAD//xAABAABAAAAAAAAABAABAABAAAAAAABABAABAABAAAAAAACABAABAABAAAAAAADABAABAABAAAAAAAEABAABAABAAAAAAAFABAABAABAAAAAAAGABAABAABAAAAAAAHABAABAABAAAAAAAIABAABAABAAAAAAAJABAABAABAAAAAAAKABAABAABAAAAAAALABAABAABAAAAAAAMABAABAABAAAAAAANABAABAABAAAAAAAOABAABAABAAAAAAAPABAABAABAAAAAAAQABAABAABAAAAAAARABAABAABAAAAAAASABAABAABAAAAAAATABAABAABAAAAAAAUABAABAABAAAAAAAVABAABAABAAAAAAAWABAABAABAAAAAAAXABAABAABAAAAAAAYABAABAABAAAAAAAZABAABAABAAAAAAAaABAABAABAAAAAAAbABAABAABAAAAAAAcABAABAABAAAAAAAdABAABAABAAAAAAAeABAABAABAAAAAAAfABAABAABAAAAAAAWAAoABAABAAAAAAAXAAoABAABAAAAAAAYAAoABAABAAAAAAAZAAoABAABAAAAAAAaAAoABAABAAAAAAAbAAoABAABAAAAAAAcAAoABAABAAAAAAAWAAkABAAAAAAAAAAXAAkABAAAAAAAAAAYAAkABAAAAAAAAAAZAAkABAAAAAAAAAAaAAkABAAAAAAAAAAbAAkABAAAAAAAAAAcAAkABAAAAAAAAAASAAMABAACAAAAAAASAAIABAACAAAAAAAQAA0ABAAAAAAAAAA=")
|
||||||
tile_map_data = PackedByteArray("AAD9/w0ABAAAAAAAAAD9/w4ABAABAAAAAAD9/w8ABAABAAAAAAD+/w0ABAAAAAAAAAD+/w4ABAABAAAAAAD+/w8ABAABAAAAAAD//w0ABAAAAAAAAAD//w4ABAABAAAAAAD//w8ABAABAAAAAAAAAA0ABAAAAAAAAAAAAA4ABAABAAAAAAAAAA8ABAABAAAAAAABAA0ABAAAAAAAAAABAA4ABAABAAAAAAABAA8ABAABAAAAAAACAA0ABAAAAAAAAAACAA4ABAABAAAAAAACAA8ABAABAAAAAAADAA0ABAAAAAAAAAADAA4ABAABAAAAAAADAA8ABAABAAAAAAAEAA0ABAAAAAAAAAAEAA4ABAABAAAAAAAEAA8ABAABAAAAAAAFAA0ABAAAAAAAAAAFAA4ABAABAAAAAAAFAA8ABAABAAAAAAAGAA0ABAAAAAAAAAAGAA4ABAABAAAAAAAGAA8ABAABAAAAAAAHAA0ABAAAAAAAAAAHAA4ABAABAAAAAAAHAA8ABAABAAAAAAAIAA0ABAAAAAAAAAAIAA4ABAABAAAAAAAIAA8ABAABAAAAAAAJAA0ABAAAAAAAAAAJAA4ABAABAAAAAAAJAA8ABAABAAAAAAAKAA0ABAAAAAAAAAAKAA4ABAABAAAAAAAKAA8ABAABAAAAAAALAA0ABAAAAAAAAAALAA4ABAABAAAAAAALAA8ABAABAAAAAAAMAA0ABAAAAAAAAAAMAA4ABAABAAAAAAAMAA8ABAABAAAAAAANAA0ABAAAAAAAAAANAA4ABAABAAAAAAANAA8ABAABAAAAAAAOAA0ABAAAAAAAAAAOAA4ABAABAAAAAAAOAA8ABAABAAAAAAAPAA0ABAAAAAAAAAAPAA4ABAABAAAAAAAPAA8ABAABAAAAAAAQAA0ABAAAAAAAAAAQAA4ABAABAAAAAAAQAA8ABAABAAAAAAARAA0ABAAAAAAAAAARAA4ABAABAAAAAAARAA8ABAABAAAAAAASAA0ABAAAAAAAAAASAA4ABAABAAAAAAASAA8ABAABAAAAAAATAA0ABAAAAAAAAAATAA4ABAABAAAAAAATAA8ABAABAAAAAAAUAA0ABAAAAAAAAAAUAA4ABAABAAAAAAAUAA8ABAABAAAAAAAVAA0ABAAAAAAAAAAVAA4ABAABAAAAAAAVAA8ABAABAAAAAAAWAA0ABAAAAAAAAAAWAA4ABAABAAAAAAAWAA8ABAABAAAAAAAXAA0ABAAAAAAAAAAXAA4ABAABAAAAAAAXAA8ABAABAAAAAAAYAA0ABAAAAAAAAAAYAA4ABAABAAAAAAAYAA8ABAABAAAAAAAZAA0ABAAAAAAAAAAZAA4ABAABAAAAAAAZAA8ABAABAAAAAAAaAA0ABAAAAAAAAAAaAA4ABAABAAAAAAAaAA8ABAABAAAAAAAbAA0ABAAAAAAAAAAbAA4ABAABAAAAAAAbAA8ABAABAAAAAAAcAA0ABAAAAAAAAAAcAA4ABAABAAAAAAAcAA8ABAABAAAAAAAdAA0ABAAAAAAAAAAdAA4ABAABAAAAAAAdAA8ABAABAAAAAAAeAA0ABAAAAAAAAAAeAA4ABAABAAAAAAAeAA8ABAABAAAAAAAfAA0ABAAAAAAAAAAfAA4ABAABAAAAAAAfAA8ABAABAAAAAAD9/xAABAABAAAAAAD+/xAABAABAAAAAAD//xAABAABAAAAAAAAABAABAABAAAAAAABABAABAABAAAAAAACABAABAABAAAAAAADABAABAABAAAAAAAEABAABAABAAAAAAAFABAABAABAAAAAAAGABAABAABAAAAAAAHABAABAABAAAAAAAIABAABAABAAAAAAAJABAABAABAAAAAAAKABAABAABAAAAAAALABAABAABAAAAAAAMABAABAABAAAAAAANABAABAABAAAAAAAOABAABAABAAAAAAAPABAABAABAAAAAAAQABAABAABAAAAAAARABAABAABAAAAAAASABAABAABAAAAAAATABAABAABAAAAAAAUABAABAABAAAAAAAVABAABAABAAAAAAAWABAABAABAAAAAAAXABAABAABAAAAAAAYABAABAABAAAAAAAZABAABAABAAAAAAAaABAABAABAAAAAAAbABAABAABAAAAAAAcABAABAABAAAAAAAdABAABAABAAAAAAAeABAABAABAAAAAAAfABAABAABAAAAAAAWAAoABAABAAAAAAAXAAoABAABAAAAAAAYAAoABAABAAAAAAAZAAoABAABAAAAAAAaAAoABAABAAAAAAAbAAoABAABAAAAAAAcAAoABAABAAAAAAAWAAkABAAAAAAAAAAXAAkABAAAAAAAAAAYAAkABAAAAAAAAAAZAAkABAAAAAAAAAAaAAkABAAAAAAAAAAbAAkABAAAAAAAAAAcAAkABAAAAAAAAAA=")
|
|
||||||
tile_set = SubResource("TileSet_xlvrw")
|
tile_set = SubResource("TileSet_xlvrw")
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[node name="Boxboy" type="CharacterBody2D" parent="."]
|
[node name="Boxboy" type="CharacterBody2D" parent="."]
|
||||||
position = Vector2(117, 76)
|
position = Vector2(128, 384)
|
||||||
script = ExtResource("1_nxogm")
|
script = ExtResource("1_nxogm")
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Boxboy"]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Boxboy"]
|
||||||
sprite_frames = SubResource("SpriteFrames_y2354")
|
sprite_frames = SubResource("SpriteFrames_y2354")
|
||||||
animation = &"idle"
|
animation = &"idle"
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Boxboy"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="Boxboy"]
|
||||||
shape = SubResource("CapsuleShape2D_ulcgi")
|
shape = SubResource("CapsuleShape2D_ulcgi")
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="Boxboy"]
|
[node name="Camera2D" type="Camera2D" parent="Boxboy"]
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[node name="Bouncy" parent="." instance=ExtResource("4_u3cyc")]
|
[node name="Bouncy" parent="." instance=ExtResource("4_u3cyc")]
|
||||||
position = Vector2(622, 475)
|
position = Vector2(528, 408)
|
||||||
|
|
||||||
|
[node name="Floaty" parent="." instance=ExtResource("5_m7jmp")]
|
||||||
|
position = Vector2(224, 384)
|
||||||
|
|
||||||
[connection signal="animation_finished" from="Boxboy/AnimatedSprite2D" to="Boxboy" method="_on_animation_finished"]
|
[connection signal="animation_finished" from="Boxboy/AnimatedSprite2D" to="Boxboy" method="_on_animation_finished"]
|
||||||
|
|||||||
Reference in New Issue
Block a user