我用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选箱运动的所有事件。