diff --git a/project.godot b/project.godot index 0f6f33b..0285018 100644 --- a/project.godot +++ b/project.godot @@ -20,6 +20,59 @@ config/icon="res://icon.svg" window/stretch/mode="canvas_items" window/stretch/aspect="expand" +[input] + +left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +jump={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +dash={ +"deadzone": 0.2, +"events": [null, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +up={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +down={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +roll={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +latch={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +twirl={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194329,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +run={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} + [physics] 3d/physics_engine="Jolt Physics" diff --git a/scenes/player.tscn b/scenes/player.tscn new file mode 100644 index 0000000..e80e713 --- /dev/null +++ b/scenes/player.tscn @@ -0,0 +1,20 @@ +[gd_scene format=3 uid="uid://cmtdq6tedv1mm"] + +[ext_resource type="Script" uid="uid://2ig5okof0vaa" path="res://scripts/UltimatePlatformerController.gd" id="1_3vyb7"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_d2by0"] +size = Vector2(111, 105) + +[node name="player" type="CharacterBody2D" unique_id=1596338883] +collision_mask = 2 +script = ExtResource("1_3vyb7") + +[node name="ColorRect" type="ColorRect" parent="." unique_id=42689460] +offset_right = 111.0 +offset_bottom = 105.0 + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=440932344] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1496788104] +position = Vector2(55.5, 52.5) +shape = SubResource("RectangleShape2D_d2by0") diff --git a/scenes/test_scene.tscn b/scenes/test_scene.tscn new file mode 100644 index 0000000..fba1ac0 --- /dev/null +++ b/scenes/test_scene.tscn @@ -0,0 +1,26 @@ +[gd_scene format=3 uid="uid://d1xirc54wud0s"] + +[ext_resource type="PackedScene" uid="uid://cmtdq6tedv1mm" path="res://scenes/player.tscn" id="1_g7g4h"] +[ext_resource type="Script" uid="uid://87oh2y0i2muf" path="res://scenes/rigid_body_2d.gd" id="2_nd71p"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_aqe1g"] +size = Vector2(1116.25, 73) + +[node name="test_scene" type="Node2D" unique_id=1970054744] + +[node name="ColorRect" type="ColorRect" parent="." unique_id=1255479846] +offset_left = 2.0 +offset_top = 530.0 +offset_right = 1121.0 +offset_bottom = 606.0 + +[node name="player" parent="." unique_id=1596338883 instance=ExtResource("1_g7g4h")] +position = Vector2(64, 386) + +[node name="floor" type="StaticBody2D" parent="." unique_id=866269158] +collision_layer = 2 +script = ExtResource("2_nd71p") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="floor" unique_id=1146724072] +position = Vector2(561.125, 569) +shape = SubResource("RectangleShape2D_aqe1g") diff --git a/scripts/UltimatePlatformerController.gd b/scripts/UltimatePlatformerController.gd index d22d7e7..3fff838 100644 --- a/scripts/UltimatePlatformerController.gd +++ b/scripts/UltimatePlatformerController.gd @@ -10,15 +10,15 @@ class_name PlatformerController2D #2. Animations are very primitive. To make full use of your custom art, you may want to slightly change the code for the animations @export_category("Necesary Child Nodes") -@export var PlayerSprite: AnimatedSprite2D -@export var PlayerCollider: CollisionShape2D +@onready var PlayerSprite = $AnimatedSprite2D +@onready var PlayerCollider = $CollisionShape2D #INFO HORIZONTAL MOVEMENT @export_category("L/R Movement") ##The max speed your player will move -@export_range(50, 500) var maxSpeed: float = 200.0 +@export_range(50, 500) var maxSpeed: float = 500 ##How fast your player will reach max speed from rest (in seconds) -@export_range(0, 4) var timeToReachMaxSpeed: float = 0.2 +@export_range(0, 4) var timeToReachMaxSpeed: float = 0 ##How fast your player will reach zero speed from max speed (in seconds) @export_range(0, 4) var timeToReachZeroSpeed: float = 0.2 ##If true, player will instantly move and switch directions. Overrides the "timeToReach" variables, setting them to 0. @@ -29,15 +29,15 @@ class_name PlatformerController2D #INFO JUMPING @export_category("Jumping and Gravity") ##The peak height of your player's jump -@export_range(0, 20) var jumpHeight: float = 2.0 +@export_range(0, 20) var jumpHeight: float = 4 ##How many jumps your character can do before needing to touch the ground again. Giving more than 1 jump disables jump buffering and coyote time. -@export_range(0, 4) var jumps: int = 1 +@export_range(0, 4) var jumps: int = 2 ##The strength at which your character will be pulled to the ground. -@export_range(0, 100) var gravityScale: float = 20.0 +@export_range(0, 100) var gravityScale: float = 30 ##The fastest your player can fall -@export_range(0, 1000) var terminalVelocity: float = 500.0 +@export_range(0, 1000) var terminalVelocity: float = 700 ##Your player will move this amount faster when falling providing a less floaty jump curve. -@export_range(0.5, 3) var descendingGravityFactor: float = 1.3 +@export_range(0.5, 3) var descendingGravityFactor: float = 2 ##Enabling this toggle makes it so that when the player releases the jump key while still ascending, their vertical velocity will cut by the height cut, providing variable jump height. @export var shortHopAkaVariableJumpHeight: bool = true ##How much the jump height is cut by. @@ -159,7 +159,7 @@ var wasLatched var crouching var groundPounding -var anim +var anim = PlayerSprite var col var animScaleLock : Vector2