虚拟键盘的方位映射到游戏世界空间的计算

以EasyTouch和EasyJoystick为例,在响应虚拟摇杆的事件方法里会传来虚拟摇杆当前方位的x轴和y轴坐标值:
QQ图片20190717145847.png

QQ图片20190717150029.png

设当前虚拟摇杆传过来的纵轴值为ver,横轴值为hor,实际的虚拟摇杆的当前方位应该为两坐标轴的向量相加:

Vector2 direction = new Vector2(hor, 0)+ new Vector2(0, ver);

direction  = new Vector2(hor, ver).normalized;

这个方位是标准的空间映射方位,有时候可能需要进一步映射到模型的方位上,比如映射到游戏角色模型上,设跟随角色的相机transform为camTransform:

//转化角色纵轴到世界空间
Vector3 forward = camTransform.TransformDirection(Vector3.forward);
forward.y = 0f;
forward = forward.normalized;
//转化角色横轴到世界空间
Vector3 right = camTransform.TransformDirection(Vector3.right);
right.y = 0;
right = right.normalized;

m_direction = new Vector2(right.x, forward.z).normalized;

m_direction即为当前角色的控制方位。
虚拟摇杆的各轴力矩应用到角色方位:

direction = new Vector3(hor* m_direction.x, 0, ver* m_direction.y).normalized;

设速度为speed:

Vector3 targetPosition = camTransform.position+ Speed * Time.deltaTime * direction;

同理使用按键时,调用方法Input.GetAxisRaw("Horizontal")和Input.GetAxisRaw("Vertical")分别代替虚拟摇杆传回hor和ver值即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.EasyTouch 资源结构 EasyTouchBundle [插件的根目录] |—EasyTouch [插件...
    Magic_Dong阅读 12,456评论 0 2
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,157评论 0 4
  • 今天上午,妹妹打来电话,说是叫我去拿鱼。我说稍后开车与她一起去她鱼塘,看看她的鱼塘上有多少鱼呢?! 妹妹养蟹20年...
    谭良根阅读 3,798评论 12 10
  • 原著作者:michael_nielsen 前往 神经网络和深度学习 神经网络和深度学习是一本免费的在线图书,这本书...
    灰斗儿阅读 1,033评论 0 0
  • 这几天一直在写职场学习和写作方面的文章,偶然看到一些艺人也写有作品续集出版,不禁好奇心起,查了下资料,竟然还有不少...
    廖旺阅读 3,218评论 0 0