unity3d学习之easytouch计算摇杆旋转角度以及摇杆八方向控制角色.docVIP

unity3d学习之easytouch计算摇杆旋转角度以及摇杆八方向控制角色.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
unity3d学习之easytouch计算摇杆旋转角度以及摇杆八方向控制角色

在写第三人称控制的时候,一开始在电脑测试是用WASD控制角色 更多精彩请关注【狗刨学习网】 后来需要发布到手机上,于是就加了一个摇杆 键盘控制角色的代码已经写好了,角色八方向移动 如果按照传统的大众思路来控制的话,是达不到我想要的效果的,传统控制思路代码如下: ?? 1 //当摇杆处于移动状态时,角色开始奔跑 2? ?void OnJoystickMove(MovingJoystick move) 3? ?{ 4? ???if (move.joystickName != EasyJoystick) 5? ???{ 6? ?? ? return; 7? ???} 8? ???//获取摇杆偏移量 9? ???float joyPositionX = move.joystickAxis.x; 10? ???float joyPositionY = move.joystickAxis.y; 11? ???if (joyPositionY != 0 || joyPositionX != 0) 12? ???{ 13? ?? ? //设置角色的朝向(朝向当前坐标+摇杆偏移量) 14? ?? ???transform.LookAt(new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY)); 15? ?? ? //移动玩家的位置(按朝向位置移动) 16? ?? ? transform.Translate(Vector3.forward * Time.deltaTime * 7.5F); 17? ?? ? //播放奔跑动画 18? ?? ? animation.CrossFade(Run); 19? ???} 20? ?} 复制代码 如果要按照摇杆传统思路控制角色,在重新写控制角色代码的话非常麻烦,所以我就通过计算摇杆旋转角度来判断当前摇杆处于哪个方向 ok,现在我们开始来敲代码 首先,我们来调试观察一下摇杆的x轴、y轴的返回值 ??//移动摇杆中?? 2? ???void OnJoystickMove(MovingJoystick move) 3? ???{ 4? ?? ?? ?Debug.Log(move.joystickAxis.x + , + move.joystickAxis.y); 5? ???} 复制代码 调试结果为: ? ? 左:x = -1,y = 0;顺时针旋转X逐渐变大,Y逐渐变大 ? ? 上:x = 0,y = 1;顺时针旋转X逐渐变大,Y逐渐变小 ? ? 右:x = 1,y = 0;顺时针旋转X逐渐变小,Y逐渐变小 ? ? 下:x = 0,y = -1;顺时针旋转X逐渐变小,Y逐渐变大 我们把摇杆底图看成是两个半圆,上半圆和下半圆 那么: ? ? X轴移动到左边时,X = -1;X轴移动到右边时:X = 1;X轴从左转到右旋转了180度 ? ? Y轴移动到左边时,Y = 0;Y轴移动到右边时:Y = 0;Y轴从左转到右旋转了180度 你如果直接看我的调试结果肯定有点晕,建议边调试边参考我的调试结果,这样才能理解 如果我们要计算当前摇杆在左上角旋转的度数怎么计算呢? 读过小学的人都可以做,只是看见摇杆返回的-1和0脑袋被绕迷糊了,我也一样,弄了好半天才弄好 ? ?当摇杆移动到左时,为0度、360度(因为360度为一圈,已经绕回远点了) ? ? 当摇杆移动到上时,为90度 ? ? 当摇杆移动到右时,为180度 ? ? 当摇杆移动到下时,为270度 既然知道是多少度这就好办多了 得出公式: ? ? 当X轴在右时为1,也就是X轴为180度,则:1 * 90 + 90 = 180 ? ? 当前X轴旋转角度为:X轴返回值 * 90度 + 90度 你以为这就完事了吗?还高兴得太早,用这个公式计算只能得到上半圆的旋转角度 现在我们要获取下半圆旋转角度,然后用上半圆旋转角度 + 下半圆旋转角度 = 当前旋转角度 当摇杆移动到下半圆时我们怎么计算旋转角度呢? 我们已经知道Y轴在左边为0,在右边为0,在下边为-1,继续用计算X轴的公式 ? ? Y左:0 * 90 + 90 = 90 ? ? Y上:1 * 90 + 90 = 180 ? ? Y下:-1 * 90 + 90 = 0 ? ? Y右:0 * 90 + 90 = 90 ? ? X左:-1 * 90 + 90 = 0 ? ? X上:0 * 90 + 90 = 90 ? ? X下:0 * 90 + 90 = 90 ? ? X右:1 * 90 + 90 = 180 从计算结果中可以

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档