如何判断运动体是否不接触地面?



我是GD脚本的新手,正在尝试学习这门语言。

我正在制作一个基本的角色控制器。我想制作具有双跳功能的游戏,但不知道如何完成此操作。我已经编写了下面的代码。

extends KinematicBody2D
const UP = Vector2(0,-1)
var motion = Vector2()
var jumps = 2
var isAddingToJumps = true;
func _physics_process(delta): 
motion.y += 9.81
if Input.is_action_pressed("ui_right"):
motion.x = 100
elif Input.is_action_pressed("ui_left"):
motion.x = -100
else:
motion.x = 0
if isAddingToJumps and is_on_floor():
jumps += 2
motion.y = 0
isAddingToJumps = false

if not is_on_floor():
isAddingToJumps = true

if Input.is_action_just_pressed("ui_up"):
if jumps > 0:
motion.y = -400
jumps -= 1

move_and_slide(motion, UP)

经过一些调试,我想我知道代码的问题。当物体接触地板时,它认为它正在接触,而不是同时触摸它。有没有简单的方法可以解决这个问题?

我可能还应该提到水平移动工作得很好,当它跳跃时,程序只是不知道什么时候跳跃

当我将jumps += 2更改为jumps = 2时,它将起作用

最新更新