我的小君主不可能这么鬼畜!(该用摇杆跑路了?!)
精华修改于2019/09/23393 浏览综合
继视角之后,小君主她终于要安上轮子跑了!但是这边不会安装履带的,那玩意又费劲又麻烦又耗时又鬼畜...
![TapTap](https://img2.tapimg.com/bbcode/images/0be072d402e5ee549f940c423487dea9.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
所以接着就是还原WOT B的移动操作嘛列个清单~摇杆....摇杆....摇杆....
![TapTap](https://img2.tapimg.com/bbcode/images/89a31ee8e5b609c501d23bc9ee2b4e4b.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
算了,直接开写先作一个固定摇杆,定一个圈
![TapTap](https://img2.tapimg.com/bbcode/images/7dbc75d0707ee31e71b74dabc5343e22.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
![TapTap](https://img2.tapimg.com/bbcode/images/483075c7d088f169bf6525ef475c9198.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
大概就在图上的位置创建吧
那以这个摇杆原点坐标为中心开始创作UI摇杆
再新建一个和摇杆环一样大小按钮与一个摇杆的点
![TapTap](https://img2.tapimg.com/bbcode/images/8a50161f6ce6d58b4c1dfcb07867bef7.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
按钮按着时读取多屏触碰的左半屏(触碰2)然后替换掉前面的摇杆点和按钮的坐标
![TapTap](https://img2.tapimg.com/bbcode/images/0485b5e6a9e11da0a0c2c3d9ac49fb75.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
这样一个基本的摇杆按钮就好了!
但是还有些问题,比如按钮能拖到环外
![TapTap](https://img2.tapimg.com/bbcode/images/ef193e44568b93b3d6e50acf49f0b9e3.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
然后数据可能过大问题,于是乎重点来了:给摇杆加上位移限制!可能这边比较笨,所以还是用到了贝赛尔,没错!还是贝赛尔!(上一贴能找到贝赛尔的食用方式)
![TapTap](https://img2.tapimg.com/bbcode/images/94d0a67b44cf652e2ca29e8d2a9fb76c.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
按下摇杆后检测坐标和摇杆原点之间的角度和相对的X参数正负读取环上的点(UI大小都是像素坐标,所以和UI大小移动相关的要注意像素坐标与屏幕坐标和的转化)作为极限点,接着把移动的坐标和方向极限点拆开用最大值和最小值来限制。
![TapTap](https://img2.tapimg.com/bbcode/images/c96398a3dd4397a1b7fb462cf8fbb206.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
最后再添加一个按钮是否按住的设定来使其回正。
![TapTap](https://img2.tapimg.com/bbcode/images/d595e34bfcb7072f3febdbb409aba590.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
一个摇杆应此而生!(原来的按钮可以都隐藏了!)
但是WOTB的玩家都应该知道WOTB摇杆的方式吧,单纯的摇杆可实现不了,所以这边想出了一个概念,用 方位号 去改变坦克的机动方式!所谓方位号就是以你的摇杆方向和状态来决定行动的编号,操作粗糙化以得到想要的效果:
![TapTap](https://img2.tapimg.com/bbcode/images/76750e8eae1126e03d5010b5f5a14823.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
如上图,当拖动到某个方位时会输出方位号,然后就会进行指定的动作。(例:0为无动作,1为前进,3左转等等)于是可以根据这个想法,调用前面的X正负判断和角度系数来取得1-8方位号,0方位号需要得到触碰位置差的长度来判定。
![TapTap](https://img2.tapimg.com/bbcode/images/eec5b09f9cd5ffe2d2164b9db9d4815d.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
(繁琐的工序..啧)
这样摇杆的变成了方位号输出了,最后搞下车控,新建一个自定义方法,这时候需要三个参数了:摇杆方位号,摇杆角度系数(WOTB移动操作前进转向有根据摇杆的角度来改变车子的转向速度)和摇杆位置差的长度(拖出距离,游戏有根据拖出距离来确定坦克速度)
![TapTap](https://img2.tapimg.com/bbcode/images/06797ec7ebba4318d72887be10f347af.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
在摇杆自定义方法下调用(没错,自定义方法可以套用自定义方法,这边管这叫俄罗斯套稽)
![TapTap](https://img2.tapimg.com/bbcode/images/d9aa302d9b2c36e8105a9b0af77e896a.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
然后编写主体,原理是根据方位号改变两边轮子转速再输出到轮子上面,记得要给轮子命名左右区分轮子o,不然晕头转向写错了就会原地龙卷风,摧毁停车场。
![TapTap](https://img2.tapimg.com/bbcode/images/14f69cc9f1f526003d156860ba5c5630.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
还要根据摇杆方向去改变摇杆系数大小来适应后退的机动,不过直接后退可以直接用0减去速度(那就等于负数了,这边觉得四则运算应该不用讲吧#小学老师会哭的欸#)
![TapTap](https://img2.tapimg.com/bbcode/images/e3d049cb8e4968fba217232d0e49f9ac.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)
最后摇杆输出到车轮的程式其实不难,但是繁琐,很令人厌烦是8~不过呢,这边还有一个:白嫖时刻!
帖子发布后一会会上架复制品(上次发的白嫖时刻的机械还有几分钟下架,如果帖主不记得了可以砍爆)
最后祝你游戏愉快!
![TapTap](https://img2.tapimg.com/bbcode/images/22c8f74eab4fe693abfd381be05c8d77.png?imageMogr2/thumbnail/1080x9999%3E/quality/80/format/jpg/interlace/1/ignore-error/1&t=1)