参考

本例修改自官方文档”物理学“部分的“使用 KinematicBody2D“一文中的示例。
image.pngimage.png

image.pngimage.png

  1. extends KinematicBody2D
  2. var speed = 120.0 # 速度 像素/秒
  3. var velocity = Vector2.ZERO # 速度向量
  4. var gravity = 5000 # 重力加速度
  5. var jump_force = 1000.0 # 单次跳跃高度
  6. func _process(delta):
  7. if is_on_floor():
  8. velocity .y = 0
  9. if is_on_wall():
  10. velocity.y = Input.get_axis("ui_up","ui_down") * speed
  11. velocity.x = Input.get_axis("ui_left","ui_right") * speed
  12. if Input.is_action_just_pressed("ui_accept"): # 按空格键
  13. velocity.y = -jump_force
  14. move_and_slide_with_snap(velocity,get_floor_normal(),Vector2.UP)
  15. return
  16. # 左右移动
  17. velocity.x = Input.get_axis("ui_left","ui_right") * speed
  18. # 实现下落
  19. velocity.y += gravity * delta
  20. # 跳跃
  21. if Input.is_action_just_pressed("ui_accept"): # 按空格键
  22. velocity.y = -jump_force
  23. velocity = move_and_slide(velocity,Vector2.UP)

基础动画示例2.gif