-
Notifications
You must be signed in to change notification settings - Fork 313
Expand file tree
/
Copy pathice_Slide_Behavior.gd
More file actions
64 lines (54 loc) · 1.74 KB
/
ice_Slide_Behavior.gd
File metadata and controls
64 lines (54 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
extends BaseCharacterBehavior
var is_sliding: bool = false
var slide_direction: Vector2 = Vector2.ZERO
@onready var originalSpeed = character.walk_speed
@onready var tile_map_layer: TileMapLayer = get_parent().get_parent().get_node("MapaHielo") # ajusta según tu estructura
@onready var hitbox:CollisionShape2D = character.get_node("CollisionShape2D")
func _physics_process(delta: float) -> void:
if not character or Engine.is_editor_hint():
return
if is_sliding:
character.moving_step = 0
character.stopping_step = 0
var slide_speed = character.walk_speed * 1.2
var motion = slide_direction * slide_speed * delta
var collision = character.move_and_collide(motion)
if collision:
is_sliding = false
character.velocity = Vector2.ZERO
else:
_check_hielo()
else:
# Movimiento normal
character.moving_step = 4000
character.stopping_step = 1500
if character.input_vector != Vector2.ZERO:
_check_hielo()
func _check_hielo() -> void:
if tile_map_layer == null:
return
var center = hitbox.global_position
var local_center = tile_map_layer.to_local(center)
var tile_pos = tile_map_layer.local_to_map(local_center)
var tile_id = tile_map_layer.get_cell_source_id(tile_pos)
var data = tile_map_layer.get_cell_atlas_coords(tile_pos)
if tile_id == 1 and (data == Vector2i(0, 1)) :
character.hieloAbajo = true
var direccion = character.input_vector
var x = abs(direccion.x)
var y = abs(direccion.y)
print(character.hieloAbajo)
if(x==y):
if(direccion.y)>0:
y = 300
if(direccion.y<0):
y = -300
x =0
direccion = Vector2(x,y)
if not is_sliding:
is_sliding = true
print(direccion)
slide_direction = direccion.normalized()
else:
is_sliding = false
character.hieloAbajo = false