EasyJoyStick使用以及两种操作杆
EasyJoyStick的使用方法,简单的不能再简单
Hedgehog Team-》Easy Touch -》Add Easy Touch For C#
Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick
配置如图:
然后看一下配置,我喜欢掌控性强一些,于是只利用到JoyStick传回来的值,也就是一个Vector2向量。
在PlayerController也就是控制器脚本上加一个引用,然后在Update中接受值即可。
代码: Vector2 axis = joystick.JoystickAxis; 
如果想要实现动态操作杆,只需要把 DynamicJoystick 口 挑上就行。
别的没什么难点了。
如果想限制动态操作杆的有效区域设置器Free Area即可。
两种移动方式解析
(1)直观移动方式:
转向立刻生效,指哪走哪
这种比较简单,直接获取方向向量,乘以速度即可
Vector2 axis = joy_stick.JoystickAxis;
float delta_x = axis.x * current_speed * Time.deltaTime;
float delta_y = axis.y * current_speed * Time.deltaTime;
transform.Translate( delta_x, delta_y,   0);            
(2)渐变转向移动方式:
在这种方式下,如果你向前走,突然把遥杆向后拉,物件不会直接向后移动,而是会转一个弯,逐渐转向到目标方向,然后移动。
Vector3 normal = (Vector3)axis.normalized;
float cos_theta = Vector3.Dot(player_object.transform.up, normal);
float theta = Mathf.Acos(cos_theta);
 float rota = theta * axis.magnitude * ((real_speed > player_data.normal_speed + 0.1f) ? player_data.turn_cof_normal : player_data.turn_cof_acc);
//防抖动
if (theta > 0.1f) 
{
Vector3 old = transform.eulerAngles;
if (Vector3.Cross(transform.up, normal).z > 0)
{
old.z += rota;
}
else 
{
old.z -= rota;
}
transform.eulerAngles = old;
}
transform.position += transform.up * real_speed * Time.deltaTime;

上面的代码,本质上讲,把移动分解成向前移动,和向拉杆指向方向,逐渐转向。
这里有两个要点,
1是计算操作杆方向和当前物件移动方向的夹角。
利用向量夹角公式计算,也就是通过两个向量的点积计算。
2是计算物件应该延那个方向进行转向,换句话说,需要判断物件应该顺时针转过去,还是要逆时针转过去
这里如果不做处理,那么转向的时候,会出现问题,比如你明明只想向左转60度,却向右转了300度
这里利用到了叉乘的概念,两个向量叉乘,其z轴的值的正负,可以判断两个向量的顺时针,逆时针相对角度关系。

EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#相关推荐

  1. android内存池,两种常见的内存管理方法:堆和内存池

    描述 本文导读 在程序运行过程中,可能产生一些数据,例如,串口接收的数据,ADC采集的数据.若需将数据存储在内存中,以便进一步运算.处理,则应为其分配合适的内存空间,数据处理完毕后,再释放相应的内存空 ...

  2. 两种 js下载文件的方法(转)

    2019独角兽企业重金招聘Python工程师标准>>> 两种 js下载文件的方法(转) functionDownURL(strRemoteURL, strLocalURL){try{ ...

  3. win8计算机安全模式,Win8.1怎么进入安全模式 两种进入Win8.1安全模式方法介绍

    在以前的Windows操作系统中,用户可以通过F8来进入电脑的安全模式,但是自从win8问世后按下F8来进入Windows的安全模式便不起作用了.由于win8及win8.1采用了混合启动的方式,所以在 ...

  4. 采用8种相位,每种相位各有两种幅度的QAM调制方法,在1200Baud的信号传输速率下能达到的网数据传输速率为( )

    采用8种相位,每种相位各有两种幅度的QAM调制方法,在1200Baud的信号传输速率下能达到的网数据传输速率为( D ) A. 2400b/s B. 3600b/s C. 9600b/s D. 480 ...

  5. php绘制一个三角形,如何利用css或html5画出一个三角形?两种不同的制作三角形方法(代码实例)...

    我们在平时的前端开发的时候,有时候是需要一些小图形来丰富一下页面效果,比如:下拉列表的倒三角图形.那么这样的一个三角形是如何制作出来的,本章给大家介绍如何利用css或html画出一个三角形?两种不同的 ...

  6. jquery、javascript实现(get、post两种方式)跨域解决方法

     jquery.javascript实现(get.post两种方式)跨域解决方法 一.实现get方式跨域请求数据 浏览器端 <script> $(document).ready(fun ...

  7. php怎么获取分类数,php 两种获取分类树的方法

    php 两种获取分类树的方法 1. /** * 获取分类树 * @param array $array 数据源 * @param int $pid 父级ID * @param int $level 分 ...

  8. 电脑录屏工具_一分钟教你学会两种电脑录屏的方法,以后别再说不知道了

    相信大家用电脑都会截图,但有时候需要用到录屏,这就难倒了很多人.那么如何在电脑是录屏呢?下面就来教你学会两种电脑录屏的方法,以后别再说不知道了. 阅读引导: •阅读完本文预计需要2分钟时间. •本文是 ...

  9. [转载]:C#两种不同的存储过程调用方法

    两种不同的存储过程调用方法 为了突出新方法的优点,首先介绍一下在.NET中调用存储过程的"官方"方法.另外,本文的所有示例程序均工作于SqlServer数据库上,其它情况类似,以后 ...

最新文章

  1. postgres 物理格式
  2. TSNE-原理与实现
  3. Jquery属性选择器(同时匹配多个条件,与或非)(附样例)
  4. uniapp时间戳转换
  5. SQL Server 事务日志
  6. 卡萨帝:用发明去超越历史!15年走完百年路
  7. java----java工具包
  8. MySQL的MyISAM和InnoDB存储引擎表结构
  9. unsigned int + int型结果分析
  10. Java流程控制语句的基本概念
  11. JAVA JSP学生助学金管理系统 jsp学生资助管理系统jsp学生管理系统jsp贷款管理系统jsp大学生贷款管理系统
  12. am355x armlinux 移植openssh
  13. 阿里架构师的架构设计——详解高可用架构设计
  14. TFS(Taobao File System)团队CODE协作工具
  15. 【渝粤题库】广东开放大学 劳动和社会保障法 形成性考核
  16. Hadoop配置lzo压缩
  17. 趣拿口碑营销,打通线上线下才是真本事!
  18. LTE-A载波聚合技术(14)---CQI的TDM和CDM
  19. cmd 命令行执行 Python 脚本
  20. java中的“我”不是“我”,NaN特殊标识以及正无穷+负无穷应该等于多少?

热门文章

  1. 操作系统上机题目(多进程1)
  2. 操作系统多线程实现_操作系统中的线程实现
  3. 找到最大回文子串_使用O(1)空间复杂度找到最大的回文子串
  4. 编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位。(DX存放高字节内容,AX存放低字节内容)
  5. Javaweb---监听器
  6. Java——n个数的全排列
  7. java内存模型 创建类_JVM内存模型及String对象内存分配
  8. uva 1623——Enter The Dragon
  9. inline内联函数的优缺点
  10. 链表题目--2 求链表的中间结点 和 求链表中倒数第k个结点