我想用Evkworld环境调用引擎做一个消除快感的小游戏。游戏里怎么拖箱子?

实现拖放

为了实现拖动功能,我们首先给需要拖动的对象添加拖动能力。

加入这个能力后,物体可以随鼠标移动。

拖动到固定位置,然后固定它。

首先,我们创建一个拖动目标点的sprite。当精灵A停止拖动并接近目标点时,我们将精灵A固定在目标点上。

在场景中放置三个拖动目标点。

添加全局变量:确定距离,在确定向导A和拖动目标点之间的距离时可以固定。

接下来,我们添加一个事件,当拖动结束时,如果它足够靠近拖动目标点,它将被固定到目标位置。

释放拖动时触发

选择离向导a最近的拖动目标点。

如果子画面A足够接近拖动目标点

Abs(距离(向导A.x,向导A.y,拖动目标点。x,拖动目标点。y))?Abs取绝对值,distance计算两点之间的距离。

将向导A的位置设置为拖动目标点的位置,并禁用拖动功能。

游戏预览就能看到效果。当你在向导A中拖动目标点足够近的时候,松开鼠标,向导A就会固定在目标点的位置,不能再拖动。

距离不够的时候,回到原来的位置。

首先,我们在向导a下创建实例变量的初始坐标。

在场景开始时初始化实例变量。

在拖拽释放事件下,增加一个子事件:距离不够时,返回初始坐标位置。

预览游戏。当距离不够时,向导A直接返回初始位置。

添加平滑移动效果以返回到原始位置。

接下来,我们通过lerp表达式实现平滑运动功能。首先,我们创建实例变量返回状态。当返回状态为1时,向导A平滑地移回其原始位置。

当我们点击拖动时,返回状态被设置为0。

修改释放拖动时的动作,从更改坐标到设置返回状态。

最后,当返回状态=1时,平滑移动到初始位置。

x:?Lerp (Elf A.x,Elf A .初始坐标x,dt * 10)

x:?Lerp (elf A.y,elf A .初始坐标y,dt * 10)

以上是本教程的所有事件,整体事件如下图所示: