game physics - More ideas of how to prevent slope slide down with KinematicBody2D? -


i have basic code below. trying player not slide down on slopes. slopes 45°. if player stop movement on slope, slide down (maybe because velocity.y += delta * gravity.y). can angle normal , set velocity.y = 0 when player on slope , not slide down. not sure if best approach. have ideas of how can achieve this? way, there way project_settings values on gdscript (ie. default_gravity)?

extends kinematicbody2d  var gravity = vector2(0,700) var velocity = vector2() var hspeed = 150 var onslope = false  func _ready():     set_fixed_process(true)     pass  func _fixed_process(delta):     var left = input.is_action_pressed("ui_left")     var right = input.is_action_pressed("ui_right")      if left:         velocity.x = -hspeed     if right:         velocity.x = hspeed     if !left && ! right:         velocity.x = 0      velocity.y += delta * gravity.y #   if onslope && !left && !right: #       velocity.y = 0 #   else: #       velocity.y += delta * gravity.y      var movement = delta * velocity     move(movement)      if is_colliding():         var normal = get_collision_normal()         var angle = getanglebynormal(normal)  #       can angle here #       if angle == 0 player on ground #       if abs(angle) > 0 && abs(angle) < 90 player on slope |> onslope = true          velocity = normal.slide(velocity)         movement = normal.slide(movement)         move(movement)     pass   func getanglebynormal(normal):     var inversenormal = normal * -1     var angle = inversenormal.angle()     angle = round(rad2deg(angle))     return angle     pass 


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -