ADD: player can jump.

main
bog 2023-09-30 21:13:16 +02:00
parent 52436feb3d
commit 89df0e6b75
5 changed files with 57 additions and 3 deletions

39
src/Actor/Jump.gd Normal file
View File

@ -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()

View File

@ -3,7 +3,7 @@ extends CharacterBody2D
var m_dir = Vector2(0, 0) var m_dir = Vector2(0, 0)
var m_speed = 256 var m_speed = 256
var m_state = null var m_state = null
func _ready(): func _ready():
self.to_normal() self.to_normal()
@ -31,3 +31,10 @@ func is_dead():
func to_dead(): func to_dead():
m_state = preload("res://Actor/Dead.gd").new() m_state = preload("res://Actor/Dead.gd").new()
m_state.this = self 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

View File

@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://blr8qcmuqs5vl" path="res://icon.svg" id="2_itibm"] [ext_resource type="Texture2D" uid="uid://blr8qcmuqs5vl" path="res://icon.svg" id="2_itibm"]
[sub_resource type="CircleShape2D" id="CircleShape2D_e2sef"] [sub_resource type="CircleShape2D" id="CircleShape2D_e2sef"]
radius = 6.0 radius = 3.16228
[node name="Actor" type="CharacterBody2D" groups=["actors"]] [node name="Actor" type="CharacterBody2D" groups=["actors"]]
script = ExtResource("1_0612w") script = ExtResource("1_0612w")

View File

@ -7,6 +7,9 @@ var m_shoot_timer = 0.0
func _physics_process(dt): func _physics_process(dt):
var delta = Vector2(0, 0) 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") \ if Input.is_action_just_pressed("player_shoot") \
and m_shoot_timer >= m_shoot_time \ and m_shoot_timer >= m_shoot_time \
and not $Actor.is_dead(): and not $Actor.is_dead():
@ -32,7 +35,7 @@ func _physics_process(dt):
delta = delta.normalized() delta = delta.normalized()
$Actor.m_dir = delta $Actor.m_dir = delta
if $Actor.is_normal(): if $Actor.is_normal() or $Actor.is_jump():
$Actor.velocity = delta * $Actor.m_speed $Actor.velocity = delta * $Actor.m_speed
$Actor.move_and_slide() $Actor.move_and_slide()

View File

@ -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) "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] [rendering]