我用evkworld调用环境引擎做了一个RTS游戏,如何实现框架人物的移动?

机能结构

本教程有五个需要实现的功能。

框选择角色

在所选角色上生成复选框。

字符移动

当鼠标移动到屏幕边缘时,移动视野。

场景视野缩放

作事前的现场(或情况)描述

首先,我们创建三个新层。

HUD:放置复选框,复选框

人员:放置操作角色

背景图像:放置背景图像

创建一个士兵对象,并为其添加自动寻路功能。

创建一个复选框,复选框?九宫格对象,编辑九宫格缩放边距

创建背景图片

将对象放在它们自己的层中。

实现框选

添加全局变量?最后点X,最后点Y,用来控制后面的选框位置。

选中了为士兵对象添加实例变量?

新事件分组框选择

当左键单击士兵时,士兵状态变为选中。

当左键点击空白位置时,士兵状态变为未选中。

设置全局变量。当按下鼠标左键时,最后一次点击x/最后一次点击Y的值就是鼠标的坐标。

当按下左键,并且当前鼠标的坐标和最后一次点击的坐标之间的距离大于16像素时,选择该框并设置坐标大小。

位置公式:x:min(鼠标操作。x,最后点击x)y:min(鼠标操作。Y,最后点击Y)

尺寸公式:abs(鼠标操作。x-最后点击x)abs(鼠标操作。Y-最后一次点击Y)

最后,当鼠标松开或距离小于16时,隐藏方框选择。

实现以上事件后,预览游戏,可以看到效果。按住鼠标左键拖动,将显示框选择框。

接下来,实现按框选择选中字符的逻辑。当鼠标左键释放时,框中的士兵状态根据框选择框的位置设置为选中状态。

以上是事件选择的全部逻辑,下图是整个事件表。

生成复选框

让我们实现复选框的逻辑。

首先,当您释放鼠标左键时,销毁先前生成的复选框。

在该事件下,建立局部变量local_ number of selected units。

根据选择的士兵数量,设置局部变量。

根据local_ selected公司的数量,循环创建复选框。

创建一个新事件,并在每一帧设置所选框的坐标和大小。

坐标公式:x:士兵。bboxleft-2 y:士兵。bboxtop-2。

尺码公式:宽度:士兵。bboxright-士兵。bboxleft+4?身高:军人。bboxbottom-士兵。bboxtop+4

实现上述逻辑后,当左键选中士兵或方框时,士兵的位置会自动生成一个选中的方框。

右键单击移动

创建一个新事件,并在释放鼠标右键、鼠标不停留在士兵上且所选士兵存在时执行该动作。

在子事件下,创建新的局部变量:local_ average x和local_ average y。

循环所有选定的士兵,并将士兵的坐标添加到实例变量中。

将实例变量除以士兵数量,然后计算平均值。然后根据平均值,让士兵开始自动寻路。

寻路坐标公式:?x:鼠标操作。x+ self.x-local_ average x Y:鼠标操作。y+ self.y-local_平均y

创建一个新事件,并在士兵成功找到路时沿着路径移动。

以上是所有的感动事件。当选士兵后,在地图上点击右键,士兵会自动移动过去。事件全貌如下:

滚动镜头移动

镜头的移动相对简单。当鼠标到达屏幕边缘时,每帧移动镜头。

视野缩放

最后通过鼠标滚轮缩放视野,通过表达式layoutscale可以得到当前场景的缩放比例(默认为1)。

以上是实现RTS选箱运动的所有事件。