47 lines
1.4 KiB
GDScript3
47 lines
1.4 KiB
GDScript3
|
|
extends State
|
||
|
|
class_name PlayerClimbUp
|
||
|
|
|
||
|
|
func get_state_name():
|
||
|
|
return str(self).split(":")[0]
|
||
|
|
|
||
|
|
var ledge_cshape = preload("res://resources/player ledge cshape.tres")
|
||
|
|
var standing_cshape = preload("res://resources/player standing cshape.tres")
|
||
|
|
|
||
|
|
func enter():
|
||
|
|
|
||
|
|
player.climbup_pos1 = player.position + Vector2(0, -52)
|
||
|
|
player.climbup_pos2 = player.position + Vector2(player.facing_direction * 40, -52)
|
||
|
|
|
||
|
|
print(player.position)
|
||
|
|
print (player.climbup_pos1)
|
||
|
|
|
||
|
|
player.ap.play("climb up")
|
||
|
|
player.sprite.position.x = player.facing_direction * 11
|
||
|
|
player.sprite.position.y = -60
|
||
|
|
|
||
|
|
player.cshape.shape = ledge_cshape
|
||
|
|
player.cshape.position.y = -69
|
||
|
|
|
||
|
|
func exit():
|
||
|
|
player.cshape.shape = standing_cshape
|
||
|
|
player.cshape.position.y = -43
|
||
|
|
|
||
|
|
player.sprite.position.x = 0
|
||
|
|
player.sprite.position.y = -48
|
||
|
|
|
||
|
|
player.climbup_pos1_reached = false
|
||
|
|
|
||
|
|
func update(delta):
|
||
|
|
pass
|
||
|
|
|
||
|
|
func physics_update(delta):
|
||
|
|
|
||
|
|
if player.position != player.climbup_pos1 && !player.climbup_pos1_reached:
|
||
|
|
player.position = player.position.move_toward(player.climbup_pos1, player.climbup_speed_y * delta)
|
||
|
|
if player.position == player.climbup_pos1:
|
||
|
|
player.climbup_pos1_reached = true
|
||
|
|
elif player.position != player.climbup_pos2 && player.climbup_pos1_reached:
|
||
|
|
player.position = player.position.move_toward(player.climbup_pos2, player.climbup_speed_x * delta)
|
||
|
|
elif player.position == player.climbup_pos2:
|
||
|
|
Transitioned.emit(self, "PlayerFall")
|