diff --git a/src/Actor/Jump.gd b/src/Actor/Jump.gd new file mode 100644 index 0000000..2f76e22 --- /dev/null +++ b/src/Actor/Jump.gd @@ -0,0 +1,39 @@ +extends Node + +var this = null +var state_name = 'Jump' +var m_ratio = 0.0 +var m_jump_state = null +var m_speed = 0.7 + +func _ready(): + pass + +func _state_process(delta): + if m_jump_state != null: + m_jump_state.call(delta) + else: + m_ratio = 0.25 + m_jump_state = self.go_up + +func go_up(delta): + var sprite = this.get_node('Sprite2D') + m_ratio += m_speed * delta + sprite.scale.x = m_ratio + sprite.scale.y = m_ratio + + if m_ratio >= 0.38: + m_jump_state = self.go_down + +func go_down(delta): + var sprite = this.get_node('Sprite2D') + m_ratio -= m_speed * delta + sprite.scale.x = m_ratio + sprite.scale.y = m_ratio + + if m_ratio <= 0.25: + this.to_normal() + queue_free() + + + diff --git a/src/Actor/actor.gd b/src/Actor/actor.gd index cfbeec2..b4850e2 100644 --- a/src/Actor/actor.gd +++ b/src/Actor/actor.gd @@ -3,7 +3,7 @@ extends CharacterBody2D var m_dir = Vector2(0, 0) var m_speed = 256 var m_state = null - + func _ready(): self.to_normal() @@ -31,3 +31,10 @@ func is_dead(): func to_dead(): m_state = preload("res://Actor/Dead.gd").new() m_state.this = self + +func is_jump(): + return m_state.state_name == 'Jump' + +func to_jump(): + m_state = preload("res://Actor/Jump.gd").new() + m_state.this = self diff --git a/src/Actor/actor.tscn b/src/Actor/actor.tscn index 8f659d4..e2814e4 100644 --- a/src/Actor/actor.tscn +++ b/src/Actor/actor.tscn @@ -4,7 +4,7 @@ [ext_resource type="Texture2D" uid="uid://blr8qcmuqs5vl" path="res://icon.svg" id="2_itibm"] [sub_resource type="CircleShape2D" id="CircleShape2D_e2sef"] -radius = 6.0 +radius = 3.16228 [node name="Actor" type="CharacterBody2D" groups=["actors"]] script = ExtResource("1_0612w") diff --git a/src/Player/player.gd b/src/Player/player.gd index 8b340ce..799dfe8 100644 --- a/src/Player/player.gd +++ b/src/Player/player.gd @@ -7,6 +7,9 @@ var m_shoot_timer = 0.0 func _physics_process(dt): var delta = Vector2(0, 0) + if Input.is_action_just_pressed("player_jump") and $Actor.is_normal(): + $Actor.to_jump() + if Input.is_action_just_pressed("player_shoot") \ and m_shoot_timer >= m_shoot_time \ and not $Actor.is_dead(): @@ -32,7 +35,7 @@ func _physics_process(dt): delta = delta.normalized() $Actor.m_dir = delta - if $Actor.is_normal(): + if $Actor.is_normal() or $Actor.is_jump(): $Actor.velocity = delta * $Actor.m_speed $Actor.move_and_slide() diff --git a/src/project.godot b/src/project.godot index 7c5063c..a3a3b84 100644 --- a/src/project.godot +++ b/src/project.godot @@ -42,6 +42,11 @@ player_shoot={ "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) ] } +player_jump={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"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":32,"echo":false,"script":null) +] +} [rendering]