我想用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)
以上是本教程的所有事件,整体事件如下图所示: