diff --git a/assets/characters.png b/assets/characters.png new file mode 100644 index 0000000..432e6c6 Binary files /dev/null and b/assets/characters.png differ diff --git a/assets/characters.png.import b/assets/characters.png.import new file mode 100644 index 0000000..c1d8e8d --- /dev/null +++ b/assets/characters.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/characters.png-71e65985a77efe7b4b18913c785b67f9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/characters.png" +dest_files=[ "res://.import/characters.png-71e65985a77efe7b4b18913c785b67f9.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 diff --git a/assets/cobra.png b/assets/cobra.png new file mode 100644 index 0000000..36b0edc Binary files /dev/null and b/assets/cobra.png differ diff --git a/assets/cobra.png.import b/assets/cobra.png.import new file mode 100644 index 0000000..a0f649f --- /dev/null +++ b/assets/cobra.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cobra.png-fb51063b32efce2c71b8ed5ea2c51131.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/cobra.png" +dest_files=[ "res://.import/cobra.png-fb51063b32efce2c71b8ed5ea2c51131.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=true +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 diff --git a/assets/mulekim.png b/assets/mulekim.png new file mode 100644 index 0000000..25d3710 Binary files /dev/null and b/assets/mulekim.png differ diff --git a/assets/mulekim.png.import b/assets/mulekim.png.import new file mode 100644 index 0000000..2abf165 --- /dev/null +++ b/assets/mulekim.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mulekim.png-84a1a766f5b2f02b56297f807cfe26be.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/mulekim.png" +dest_files=[ "res://.import/mulekim.png-84a1a766f5b2f02b56297f807cfe26be.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=true +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 diff --git a/assets/peladim.png b/assets/peladim.png new file mode 100644 index 0000000..bf24f40 Binary files /dev/null and b/assets/peladim.png differ diff --git a/assets/peladim.png.import b/assets/peladim.png.import new file mode 100644 index 0000000..8a30cc3 --- /dev/null +++ b/assets/peladim.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/peladim.png-ddea62a94168aaf92595f0eb445369a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/peladim.png" +dest_files=[ "res://.import/peladim.png-ddea62a94168aaf92595f0eb445369a8.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 diff --git a/assets/reizim.png b/assets/reizim.png new file mode 100644 index 0000000..efa2bfe Binary files /dev/null and b/assets/reizim.png differ diff --git a/assets/reizim.png.import b/assets/reizim.png.import new file mode 100644 index 0000000..b560ce1 --- /dev/null +++ b/assets/reizim.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/reizim.png-d67c468eaa8a95d2a32fa95da4d4f320.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/reizim.png" +dest_files=[ "res://.import/reizim.png-d67c468eaa8a95d2a32fa95da4d4f320.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=true +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 diff --git a/assets/sheet.png b/assets/sheet.png new file mode 100644 index 0000000..939cb28 Binary files /dev/null and b/assets/sheet.png differ diff --git a/assets/sheet.png.import b/assets/sheet.png.import new file mode 100644 index 0000000..1f5c6ee --- /dev/null +++ b/assets/sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sheet.png-52111e7c2e2807483471611e5c60b505.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sheet.png" +dest_files=[ "res://.import/sheet.png-52111e7c2e2807483471611e5c60b505.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=true +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 diff --git a/assets/swoosh.png b/assets/swoosh.png new file mode 100644 index 0000000..c582c1d Binary files /dev/null and b/assets/swoosh.png differ diff --git a/assets/swoosh.png.import b/assets/swoosh.png.import new file mode 100644 index 0000000..33334ea --- /dev/null +++ b/assets/swoosh.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/swoosh.png-f9155c757ba7a905fb8736f4a5858a5d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/swoosh.png" +dest_files=[ "res://.import/swoosh.png-f9155c757ba7a905fb8736f4a5858a5d.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=true +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 diff --git a/cenas/game.tscn b/cenas/game.tscn new file mode 100644 index 0000000..14a553c --- /dev/null +++ b/cenas/game.tscn @@ -0,0 +1,74 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://script/player.gd" type="Script" id=1] +[ext_resource path="res://assets/peladim.png" type="Texture" id=2] + +[sub_resource type="CapsuleShape2D" id=1] +radius = 6.09745 +height = 10.7625 + +[sub_resource type="Animation" id=3] +resource_name = "anda" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("peladim:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 14, 17 ] +} + +[sub_resource type="Animation" id=4] +resource_name = "edle" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("peladim:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 152.883, 10 ) + +[node name="game" type="Node"] + +[node name="Node2D" type="Node2D" parent="."] + +[node name="player" type="KinematicBody2D" parent="Node2D"] +position = Vector2( 77.7704, 17.5611 ) +script = ExtResource( 1 ) + +[node name="peladim" type="Sprite" parent="Node2D/player"] +position = Vector2( -0.307297, 1.95441 ) +texture = ExtResource( 2 ) +hframes = 23 +frame = 1 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Node2D/player"] +visible = false +position = Vector2( 0.17041, 0.413589 ) +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Node2D/player"] +anims/anda = SubResource( 3 ) +anims/edle = SubResource( 4 ) + +[node name="chão" type="StaticBody2D" parent="."] +position = Vector2( 1.25436, 91.5684 ) +scale = Vector2( 2.55446, 1.21876 ) +constant_linear_velocity = Vector2( 0, 0.15 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="chão"] +shape = SubResource( 2 ) diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..2b65815 Binary files /dev/null and b/icon.png differ diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..96cbf46 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.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=true +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 diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..2bbeb9c --- /dev/null +++ b/project.godot @@ -0,0 +1,55 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ ] +_global_script_class_icons={ + +} + +[application] + +config/name="plataforma" +run/main_scene="res://cenas/game.tscn" +config/icon="res://icon.png" + +[display] + +window/size/width=600 +window/size/height=400 +window/stretch/mode="2d" +window/stretch/aspect="keep" +window/stretch/shrink=4.0 + +[input] + +direita={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) + ] +} +esquerda={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null) + ] +} +pulo={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) + ] +} + +[rendering] + +threads/thread_model=2 +quality/filters/anisotropic_filter_level=1 +environment/default_environment="res://default_env.tres" diff --git a/script/player.gd b/script/player.gd new file mode 100644 index 0000000..b0ca2bb --- /dev/null +++ b/script/player.gd @@ -0,0 +1,75 @@ +extends KinematicBody2D + +# This demo shows how to build a kinematic controller. + +# Member variables +const GRAVITY = 500.0 # pixels/second/second + +# Angle in degrees towards either side that the player can consider "floor" +const FLOOR_ANGLE_TOLERANCE = 40 +const WALK_FORCE = 600 +const WALK_MIN_SPEED = 10 +const WALK_MAX_SPEED = 200 +const STOP_FORCE = 1300 +const JUMP_SPEED = 200 +const JUMP_MAX_AIRBORNE_TIME = 0.2 + +const SLIDE_STOP_VELOCITY = 1.0 # one pixel/second +const SLIDE_STOP_MIN_TRAVEL = 1.0 # one pixel + +var velocity = Vector2() +var on_air_time = 100 +var jumping = false + +var prev_jump_pressed = false + + +func _physics_process(delta): + # Create forces + var force = Vector2(0, GRAVITY) + + var walk_left = Input.is_action_pressed("esquerda") + var walk_right = Input.is_action_pressed("direita") + var jump = Input.is_action_pressed("pulo") + + var stop = true + + if walk_left: + if velocity.x <= WALK_MIN_SPEED and velocity.x > -WALK_MAX_SPEED: + force.x -= WALK_FORCE + stop = false + elif walk_right: + if velocity.x >= -WALK_MIN_SPEED and velocity.x < WALK_MAX_SPEED: + force.x += WALK_FORCE + stop = false + + if stop: + var vsign = sign(velocity.x) + var vlen = abs(velocity.x) + + vlen -= STOP_FORCE * delta + if vlen < 0: + vlen = 0 + + velocity.x = vlen * vsign + + # Integrate forces to velocity + velocity += force * delta + # Integrate velocity into motion and move + velocity = move_and_slide(velocity, Vector2(0, -1)) + + if is_on_floor(): + on_air_time = 0 + + if jumping and velocity.y > 0: + # If falling, no longer jumping + jumping = false + + if on_air_time < JUMP_MAX_AIRBORNE_TIME and jump and not prev_jump_pressed and not jumping: + # Jump must also be allowed to happen if the character left the floor a little bit ago. + # Makes controls more snappy. + velocity.y = -JUMP_SPEED + jumping = true + + on_air_time += delta + prev_jump_pressed = jump