2016 - 2024

感恩一路有你

编写游戏中的跳跃功能

浏览量:1768 时间:2024-06-23 20:56:05 作者:采采

在游戏开发中,跳跃是一个非常常见的动作。无论是平台游戏还是角色扮演游戏,跳跃都是不可避免的。在Gamemaker2中实现跳跃功能也是非常简单的,接下来我们一起来看看。

1. 创建重力变量

当我们进行跳跃时,人物必然会掉落,因此我们需要创建一个重力变量来模拟这个过程。打开Gamemaker2,在object的Create事件中添加以下代码:

```

grav 0.5; // 设置重力加速度

vspd 0; // 设置垂直速度

```

以上代码中,我们设置了重力加速度为0.5,并将垂直速度初始化为0。

2. 设置重力方向

在设置完重力速度后,我们需要限制重力方向。我们不能让对象朝上运动,否则就没有跳跃效果了。在object的Step事件中添加以下代码:

```

vspd grav; // 增加垂直速度

if (vspd > 10) vspd 10; // 设置最大垂直速度

```

代码中,我们将垂直速度增加重力加速度grav,然后将其限制在一定范围内(这里是10),以防止速度过快。

3. 检测着陆位置

当我们进行跳跃时,需要检测我们跳跃到达的位置是否能够着陆。如果有其他障碍物或空盒,我们需要停止跳跃。在object的Step事件中添加以下代码:

```

var landing position_meeting(x, y vspd, obj_wall); // 检测是否能够着陆

if (landing) {

while (!position_meeting(x, y sign(vspd), obj_wall)) {

y sign(vspd);

}

vspd 0;

}

```

以上代码中,我们使用position_meeting函数检测对象是否能够着陆。如果能够着陆,我们使用while循环向下移动对象,直到与障碍物相交。最后将垂直速度设为0,停止跳跃。

4. 减速过程

当我们跳跃到达顶点时,需要一个减速的过程,将速度由刚刚的恒定速度降低下来,以便于我们着陆。在object的Step事件中添加以下代码:

```

if (keyboard_check_released(ord('W')) vspd < -3) vspd -3; // 跳跃高度限制

```

以上代码中,我们使用keyboard_check_released函数来检测键盘是否被释放,同时将垂直速度限制在-3以内,以防止跳跃高度过高。

5. 添加到object中

最后,将以上代码添加到我们的object的Step事件中,就可以实现跳跃功能了。如果后期用得比较多,我们可以将其继承到其他object中使用。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。