当前位置:网站首页>如何实现横版游戏中角色的移动控制
如何实现横版游戏中角色的移动控制
2022-07-07 21:36:00 【51CTO】
嗨!大家好,我是小蚂蚁。欢迎关注我的微信公众号【小蚂蚁教你做游戏】,学习更多游戏开发原创教程。
今天分享一下横版游戏中角色的移动控制,在一个 2D 的横版游戏中,对于游戏角色的移动控制,其实只需要考虑水平方向上即可。如果角色可以跳跃的话,才需要去考虑垂直方向上的移动,这篇文章只涉及到水平方向上的角色移动控制。
如图,是一个人物角色,我们需要考虑的有两点。
第一点是控制这个角色在水平方向上移动,按向右移动的按钮时,他的位置应该向右移动,按向左移动的按钮时,他的位置应该向左移动。
第二点是控制角色的朝向,向右移动时,角色应该面向右,向左移动时,角色应该面向左。
接下来,我们来到微信小游戏制作工具中,看一下如何实现这样的移动控制功能。
我们先来实现一下利用“摇杆”控制角色的移动。“摇杆”插件位于素材库中,点击“资源管理器”中的“添加素材”按钮,打开素材库。
在素材库的上选择“插件”,找到“摇杆”,添加到项目中。
接着,再添加一个用于控制的角色,可以在素材库中找到“丛林冒险”中的“奔跑人物”(这个素材是有跑步动画帧的),添加到项目中。
添加完成之后,我们的项目就变成了这样。
接下来我们将使用下方的这个摇杆来控制游戏角色的移动。
要实现精灵的移动控制,其实工具已经为我们提供了现成的“行为”了,选中“奔跑人物”,然后在属性区中点击“管理行为”,在打开的行为面板中,开启“方向控制”行为。
行为开启后,回到属性区的下方就可以看到关于“方向控制”行为的一些属性了。这里因为我们只需要控制水平方向上的移动,所以方向选择这里使用“左右”即可。
除此之外,在积木区中的“行为”类别中,也增加了与“方向控制”有关的积木块。
其实,在增加了“摇杆”插件,开启了“方向控制”行为之后,我们就已经完成第一步了,点击预览场景,看一下。
可以看到,这时我们已经可以使用摇杆来控制角色的移动了。
接下来,我们继续完成第二步,就是调整角色的朝向,让角色向右移动时,面向右,向左移动时,面向左。
想要实现这个功能,需要先了解 2 块积木块,第一块就是“方向控制”中的“移动方向”积木块。
调用这个积木块,我们可以获得一个角度值,通过判断当前的角度值,可以知道当前角色是在向哪里移动。
如图,如果当前正在向右移动的话,调用“移动方向”积木块会获得一个 0 的值,向左移动的话,会获得一个 180 的值。
接下来,我们了解一下第二块积木块。位于“外观”中的“将自己的造型水平翻转”。
这个积木块帮助我们解决的就是精灵图片的朝向。
如图,左侧的图片经过“水平”翻转后,就会变成右侧的样子。
在了解完这两块必须的积木块之后,我们直接来看一下实现逻辑,在角色上增加如下的积木块。
这里我们根据“是否向右”的变量的值,以及“移动方向”的数值,来判断何时进行水平翻转。如果当前角色面向右,那么只有在角色向左移动的时候,才应该进行一次翻转,让角色面向左,反之亦然。
再次预览一下,看看移动效果。
根据摇杆的控制,角色会向正确的方向移动,并且会面向正确的方向,这样控制角色移动的功能就完成了,
可能有人会说,这是一个 2D 横版游戏,根本没有必要使用一个包含 4 个方向的摇杆,只需要使用“一左一右”的两个按钮控制方向就可以了。使用两个按钮来控制方向其实也非常的简单。
我们在场景中增加两个按钮,表示左右键。
然后,新建 2 个通知,一个通知“向左移动”,一个通知“向右移动”。
这两个按钮的上的逻辑非常的简单,当我按住按钮时,它们给游戏中的角色发送对应的通知。
最后,来到角色上,接收这两个通知,然后只需要根据通知调用“行为”中的“向左/右移动”积木即可。
最后,我们来预览一下。
这样我们就实现两种移动控制方式,一种使用“摇杆”控制,一种使用“左右按钮”控制,其实“摇杆”插件只不过是自动给我们处理了向左向右的移动而已。
好了,今天的内容就到这里了,对于横版游戏中角色的移动控制技能,你掌握了吗?
嗨!大家好,我是小蚂蚁。欢迎关注我的微信公众号【小蚂蚁教你做游戏】,学习更多游戏开发原创教程。
边栏推荐
- Hdu4876zcc love cards (multi check questions)
- Demon daddy B2 breaks through grammar and completes orthodox oral practice
- Jerry's about TWS channel configuration [chapter]
- Take the intersection of two sets
- [open source] Net ORM accessing Firebird database
- Ad domain group policy management
- The function is really powerful!
- Feature generation
- Demon daddy B3 read extensively in a small amount, and completed 20000 vocabulary+
- Devil daddy B1 hearing the last barrier, break through with all his strength
猜你喜欢
Have you ever been confused? Once a test / development programmer, ignorant gadget C bird upgrade
Kirin Xin'an operating system derivative solution | storage multipath management system, effectively improving the reliability of data transmission
使用 CustomPaint 绘制基本图形
Problems encountered in installing mysql8 for Ubuntu and the detailed installation process
Build your own website (18)
Qt编写物联网管理平台39-报警联动
NVR hard disk video recorder is connected to easycvr through the national standard gb28181 protocol. What is the reason why the device channel information is not displayed?
The little money made by the program ape is a P!
Google SEO external chain backlinks research tool recommendation
Win11U盘不显示怎么办?Win11插U盘没反应的解决方法
随机推荐
Use br to recover backup data on azure blob storage
Which futures company is the safest to open a futures account?
Demon daddy guide post - simple version
Backup tidb cluster to persistent volume
OpenGL super classic learning notes (1) the first triangle "suggestions collection"
Datatable data conversion to entity
L'enregistreur de disque dur NVR est connecté à easycvr par le Protocole GB 28181. Quelle est la raison pour laquelle l'information sur le canal de l'appareil n'est pas affichée?
Contour layout of margin
The new version of onespin 360 DV has been released, refreshing the experience of FPGA formal verification function
Time standard library
[colmap] sparse reconstruction is converted to mvsnet format input
GridView defines its own time for typesetting "suggestions collection"
Typescript TS basic knowledge type declaration
Programming mode - table driven programming
Automatic classification of defective photovoltaic module cells in electronic images
Demon daddy A1 speech listening initial challenge
Cv2.resize function reports an error: error: (-215:assertion failed) func= 0 in function ‘cv::hal::resize‘
Nine degree 1201 - traversal of binary sort number - binary sort tree "suggestions collection"
2022 how to evaluate and select low code development platforms?
Jerry's test box configuration channel [chapter]