Unity笔记-29-ARPG游戏项目-11-完善运动

之前的文章已经介绍了如何让人物动起来,但是之前的代码和思路仍然存在一些问题,这里对其进行完善

如何控制运动

如果是对通过对刚体的速度进行控制,那么就必须要考虑到跳跃等动作对垂直方向速度的影响,角色移动如果直接通过赋予速度,那么角色就无法跳跃了。因此,这里我改为使用力来控制,并且为了体现角色运动上的惯性,例如在角色快速跑出悬崖时,下坠的同时需要继续向前运动一段路程而不是直接垂直下落。

对于斜坡运动的考虑

此外当运动的地形为倾斜时,运动方向就不再是水平的了,就需要赋予倾斜的力而非水平的力,这样的设置时因为,角色在走上坡的时候赋予水平的力没有问题,但是角色在走下坡的时候赋予水平的力使得角色速度比较大时,会出现不断下坠的情况,因为时水平移动,但是由于下坡,所以要下坠,因此赋予的力需要更改为倾斜的力,此外由于设置了惯性,角色在以比较快的速度走上坡路时,当角色走到尽头时,会因为惯性导致飞起来的效果,这不是我想要的,因此在角色停止运动或者走到路段尽头的时候需要将速度归零一次,不过这其实并不好判断,因为,停止运动时倒是容易判断,但是走到路段尽头就比较麻烦,完全避免比较困难,因此需要在数值上控制好速度和惯性的保持。

跳跃

跳跃时,需要获得想上的力,并且要获得当前速度的方向力,以达到向前跳的效果,如果速度为0那么就是原地跳跃

这里建议使用协程,如果通过赋予力的方式使角色获得速度,那么这个力必须是持续的,如果只是瞬间的力效果微乎其微又获得因为重力的影响导致这种效果马上就被抵消了,因此执行跳跃指令前要关闭重力,而且跳跃时上升速度和下降速度是会变化的,这里建议使用曲线控制,通过曲线和协程赋予一个相对平滑的合乎逻辑的跳跃运动,因此我们可以把力就理解为赋予的速度大小,一旦力消失,那么速度也就消失,但是这种控制比起直接控制速度有更高的容错。跳跃结束,重新开启重力

对于Force.Mode请参考以下分析

Force.Mode的区别
功能注解:ForceMode为枚举类型,用来控制力的作用方式,有4个枚举成员,在以下举例中均设刚体质量为m=2.0f,力向量为f=(10.0f,0.0f,0.0f)。(1)ForceMode.Force:默认方式,使用刚体的质量计算,以每帧间隔时间为单位计算动量。设FixedUpdate()的执行频率采用系统默认值(即0.02s),,则由动量定理f•t=m•v可得:10*0.02=2*v1,从而可得v1=0.1,即每帧刚体在X轴上值增加0.1米,从而可计算得刚体的每秒移动速度为v2=(1/0.02)*v1=5m/s。(2)ForceMode.Acceleration:在此种作用方式下会忽略刚体的实际质量而采用默认值1.0f,时间间隔以系统帧频间隔计算(默认值为0.02s),即f•t=1.0•v即可得v1= f•t=10*0.02=0.2,即刚体每帧增加0.2米,从而可得刚体的每秒移动速度为v2=(1/0.02)*v1=10m/s。(3)ForceMode.Impulse:此种方式采用瞬间力作用方式,即把t的值默认为1,不再采用系统的帧频间隔,即f•1.0=m•v即可得v1=f/m=10.0/2.0=5.0,即刚体每帧增加5.0米,从而可得刚体每秒的速度为v2=(1/0.02)*5.0=250m/s。(4)ForceMode.VelocityChange:此种作用方式下将忽略刚体的实际质量,采用默认质量1.0,同时也忽略系统的实际帧频间隔,采用默认间隔1.0,即f•1.0=1.0•v参考文章:
https://www.cnblogs.com/jiahuafu/p/6144112.html

Unity笔记-29-ARPG游戏项目-11-完善运动相关推荐

  1. oracle 11g dul,【学习笔记】Oracle DUL 11 兼容Oracle 12C数据库的DUL工具最新版本

    天萃荷净 oracle dul 11 正式发布,迫不及待的下载来测试,现在版本号为dul 11.2.0.0.1,目前只发布了for linux,其他版本估计要等等.期待该版本有引进新功能 1.orac ...

  2. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  3. 11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31 php相关配置

    - 11.28 限定某个目录禁止解析php - 11.29 限制user_agent - 11.30/11.31 php相关配置 - 扩展 - apache开启压缩 http://ask.apelea ...

  4. ROS笔记(36) 避障运动规划

    ROS笔记(36) 避障运动规划 1. 避障问题 2. 启动机械臂 3. 添加障碍 4. 设置位姿 5. 避障规划 6. 启动避障规划 1. 避障问题 工作环境中会有一些周围物体,这些物体有可能成为机 ...

  5. 人工智能实践:Tensorflow2.0笔记 北京大学MOOC(1-1)

    人工智能实践:Tensorflow2.0笔记 北京大学MOOC(1-1) 说明 一.神经网络计算过程 1. 人工智能三学派 2. 神经网络设计过程 2.1 人脑中的神经网络形成过程 2.2 计算机模仿 ...

  6. Houdini流体>>粒子流体导出到unity笔记

    Houdini流体>>Houdini流体导出到unity笔记 一.参考资料: 1.unity中流体案例项目连接:(可选HDRP 和URP管线) https://github.com/kei ...

  7. 英语读书笔记-Book Lovers Day 11

    英语读书笔记-Book Lovers Day 11 Part 1 And anyone who'd miss that book's obvious potentional is arguably i ...

  8. mysql cluste 5.6.29 ndb-7.4.11搭建实战

    基于CentOS 7安装MySQL-Cluster (mysql-5.6.29 ndb-7.4.11) 环境 系统:centos7.3 Mysql版本:mysql-5.6.29 ndb-7.4.11 ...

  9. Unity笔记-25-简单的商城系统数据库操作

    Unity笔记-25-简单的商城系统&数据库操作 要求与分析 英雄属性界面 展示英雄头像,英雄名称,英雄属性(AD,AP,AR,SR,自左向右,自上向下),金币数量 商店界面 展示可购买的物品 ...

  10. ROS笔记(35) 笛卡尔运动规划

    ROS笔记(35) 笛卡尔运动规划 1. 笛卡尔运动规划 2. 启动轨迹可视化机械臂 3. 运动规划 4. 部分代码解析 5. 启动规划 1. 笛卡尔运动规划 而在ROS笔记(34) 工作空间规划 中 ...

最新文章

  1. java线程多栈会溢出_JVM 栈(stack)溢出案例
  2. OMG!又一个频繁FullGC的案例
  3. use stacks能够把很多相似的文件叠加在macos的桌面上
  4. python控制结构(二)_Python学习手册之控制结构(二)
  5. [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断
  6. 关于0基础磁盘管理(gpt UEFI...)最好的一篇文章(来自gentoo linux)
  7. 单片机小白学步系列(七) 准备实验板——萝卜青菜,各有所爱
  8. mysql语法学习(一)__Instances__表
  9. 羞羞的Python模块包
  10. STM32+uCOS-II+uc/GUI移植 (uC/GUI API函数学习一)
  11. oracle同时删除一行数据,oracle 多表删除 同时删除多表中关联数据
  12. C#调用DLL函数方法
  13. Altium Designer 18安装方法
  14. 机器人导航,人工势场法的地图导航规划
  15. 最佳学习方法(10)学习方法介绍
  16. 软件测试面试经常会被问到的三大问题(面试常考)
  17. ctfshow web入门 命令执行:55-57
  18. 5.5 除法的运算过程
  19. android 连接电脑,安卓手机怎么连接电脑详细介绍【图文教程】
  20. docker自定义elasticsearch镜像——集成中文分词器smartcn

热门文章

  1. 1、STM32通过软件IIC连接ADXL345(ADXL345使用遇到的一些坑)
  2. 方舟仙境服务器什么时候修复,方舟生存进化官服多久删一次服务器
  3. 人民日报+俞敏洪:教育好自己的孩子,是你最重要的事业(两文)
  4. “33岁,阿里程序员,税后年薪170万,我征婚有要求,有错吗?”
  5. MySQL创建自定义函数提示:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its ......
  6. java spider爬虫_一个简单的java网络爬虫(spider)
  7. 记录office安装一半重启后无法继续安装
  8. Filtered request failed
  9. 螺旋扩孔的效率高,但侧壁质量不如步进扩孔
  10. jupyter改字体主题美化