拖拽物体到指定位置

在本次教程中,我们将学习如何拖拽物体,并且当物体移动到指定范围时固定位置,不在指定范围时返回最初位置。
实现拖拽
为了实现拖拽功能,首先我们为需要拖拽的对象添加拖拽能力

在添加该能力后,对象即可跟随鼠标移动
拖拽至固定位置后固定
首先我们创建一个拖动目标点精灵, 当精灵A停止拖拽并且距离拖动目标点很近时,将精灵A固定在目标点上。

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

添加全局变量:判定距离,用于判定精灵A与拖动目标点距离多少时,可以被固定

接下来我们添加事件,当拖拽结束时,如果距离拖动目标点足够近,则固定到目标位置。
当拖拽松开时触发

选中距离精灵A最近的拖动目标点


如果精灵A与拖动目标点距离足够近

abs(distance(精灵A.x,精灵A.y,拖动目标点.x,拖动目标点.y)) ,abs取绝对值, distance计算两点距离

将精灵A的位置设置到拖动目标点的位置,并且禁用拖拽能力

预览游戏即可看到效果,当精灵A里拖动目标点足够近时松开鼠标,精灵A将会固定到目标点的位置,并且无法再次拖动
距离不够时,返回原来位置
首先我们在精灵A下面创建实例变量初始坐标

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

在拖拽松开事件下,添加子事件:当距离不够时,返回到初始坐标位置

预览游戏,当距离不够时,精灵A直接回到了初始位置。
为返回初始位置添加平滑移动效果
接下来我们通过lerp表达式,实现平滑移动功能。首先我们创建实例变量返回状态,当返回状态为1时,精灵A平滑移动回初始位置。

当我们点击拖拽时,将返回状态设置为0

修改松开拖拽时的动作,从改变坐标变成设置返回状态

最后,当返回状态=1时,平滑移动到初始位置
X: lerp(精灵A.x,精灵A.初始坐标x,dt * 10)
X: lerp(精灵A.y,精灵A.初始坐标y,dt * 10)

以上就是本次教程的全部事件,整体事件如下图所示:


点击下载全能无需编程的唤境引擎!
https://www.evkworld.cn/?c=600005&sc=600019&auto=1