先看看粗糙的效果图
动画.gif
分析下英雄的动作
X轴、Y轴平移
Z轴旋转
假定英雄的速度为speed,面部朝向角度angle
X方向偏移量 | Y方向偏移量 | Z轴旋转角度 |
---|---|---|
speed * cos(angle) | speed * sin(angle) | angle |
摇杆需要对外给出的必要接口是angle变化时候的回调。
对于iOS设备不改变锚点的情况下X向右为正, Y向下为正,Z顺时针、水平向右为起始方向,有点晕,要说错了帮我纠正下。
如下图(图画的太糙,将就看先)
iPhone坐标系.png
这里只按照标准的直角坐标系去计算,从X轴正方向开始,逆时针为角度的变化方向
直角坐标系.png
通过 余弦定理 很容易算出角度(知道起点跟手势移动的点即可)
余弦定理图.jpg
余弦定理公式.png
推荐一款Mac下的公式编辑器 Daum Equation Editor
计算出角度之后余下的问题就迎刃而解了,改变英雄视图的位置即可
定义一个Hero对象,持有一个HeroView,暂时有angle、speed、state属性,给Hero添加一个move和stop方法,来操作英雄即可。
感谢您阅读完毕,如有疑问,欢迎添加QQ:714387953(蜗牛上高速)。
github:https://github.com/yhl714387953/KingOfGlory
如果有错误,欢迎指正,一起切磋,共同进步
如果喜欢可以Follow、Star、Fork,都是给我最大的鼓励