最近在做一个小游戏,需要实现人物的跳跃效果。自己从简单到复杂,把目前比较好的方法都试了一遍,这里简单总结一下。

1.直接使用动画位移

这个其实是美术在做动画的时候已经做好的东西,跳跃的动画本身就含有位移,只需要在应用动画的时候勾选Apply Root Motion就可以了。但是简单也有问题,就是跳跃的高度无法控制,不够灵活。不过对于新手来说先试一下,至少人物能动起来,心里美滋滋。

2.使用刚体组件加作用力

这个其实就是利用Unity的刚体组件,模拟真实的物理效果。在跳跃的时刻给物体添加一个向上的瞬时作用力,这样就能模拟跳跃的效果。这个使用场合还是很多的。但是也有毛病,刚体模拟跳跃还需要勾选重力(当然也可以给物体一个向下的恒力),但是大多数情况下我们是不需要重力的,而且使用物理会消耗更多资源(相比脚本)。这个网上也有很多例子,一行代码搞定,不详细介绍。

3.自己写脚本模拟跳跃

这个是应用场景最多的方式。简单的,可以定义跳跃的时间和高度,然后开协程每帧更新物体的高度,这样就能实现跳跃,具体见下面代码。但是这种跳跃是线性的,无法模拟真实跳跃,更加无法实现自定义跳跃的曲线。

1 public int jumpTime = 30;2 public int fallTime = 20;3 public float jumpHeight =1f;4 voidJumpForSeconds()5 {6 StartCoroutine(jumpForSeconds());7 }8

9 IEnumerator jumpForSeconds()10 {11 int time =jumpTime;12 float speed = jumpHeight /jumpTime;13 while(time>0)14 {15 time--;16 transform.Translate(transform.up *speed);17 yield return newWaitForEndOfFrame();18 }19 time =fallTime;20 speed = -jumpHeight /fallTime;21 while(time>0)22 {23 time--;24 transform.Translate(transform.up *speed);25 yield return newWaitForEndOfFrame();26 }27 }

4.使用AnimationCurve

这里只介绍简单的使用方法。AnimationCurve是Unity可视化的曲线模拟组件,需要在挂载的脚本中public声明一个AnimationCurve类型的变量,如public AnimationCurve jumpCurve; 此时可以发现inspector视图中脚本多出来一个

单击后面的编辑框即可打开编辑界面,打开后如图

在这里可以编辑你想要的曲线类型,跳跃就是简单的抛物线,你也可以自定义任何类型的曲线。具体如何编辑曲线,可以查看官方文档https://docs.unity3d.com/Manual/EditingCurves.html,写的十分详细。吐槽一下这里的曲线只能用定义关键帧的方式来画,并没有预定义好的曲线。如果能做成matlab那样强大就好了,当然也可能是游戏中其实不需要那么复杂的曲线。

接下来如何使用这条曲线呢,其实你可以把刚才定义的变量jumpCurve理解为这条曲线,它提供了很多方法,最常用的就是Evaluate函数,这个函数参数为x,返回y值,也就是你可以根据横轴任意一点得到曲线上的某一点。在跳跃的例子中,横轴就是时间,纵轴就是高度,那么我们稍微修改一下方法3,高度由这个曲线每帧获取,然后定义物体高度就可以了。

1 voidJumpForSeconds()2 {3 StartCoroutine(jumpForSeconds());4 }5

6 IEnumerator jumpForSeconds()7 {8 int time = 0;9 float x = 0;10 float z = 0;11 float height = 0;12 while(time<=jumpTime)13 {14 x =transform.position.x;15 z =transform.position.z;16 height =jumpCurve.Evaluate(time);17 transform.position = newVector3(x, height, z);18 yield return newWaitForEndOfFrame();19 time++;20 }21 }

顺便再多说一点,这个AnimationCurve十分强大,像道路生成、运动轨迹等都可以使用。

unity3d人物跳_Unity人物跳跃效果相关推荐

  1. 计算机人物事迹范文,人物事迹通讯稿范文.doc

    人物事迹通讯稿范文 人物事迹通讯稿范文 篇一: 新闻通讯稿范文写通讯稿 ?1.通讯的概念 通讯,是运用叙述.描写等多种手法,具体.生动.形象地反映新闻事件或典型人物的一种新闻报道形式.它是记叙文的一种 ...

  2. Unity3d开发跳一跳-郑洪智-专题视频课程

    Unity3d开发跳一跳-2883人已学习 课程介绍         使用Unity2017.3开发"跳一跳"小游戏的教程. 课程收益     用Unity3d 2017.3实现微 ...

  3. 如何绘画漫画人物眼睛?人物眼睛画法教程!

    如何绘画漫画人物眼睛?人物眼睛画法教程!眼睛是人物最重要的脸部部位之一,配合着发型,眼睛能直接说出人物的性格特征.为了帮助有兴趣的朋友理解大多数人会选择绘画培训机构,那么今天小编就带大家来看看手绘古风 ...

  4. 学画画的新手怎么画人物?画人物有哪些技巧!

    本文由"学美术上美术集网校"原创,图片素材来自网络,仅供学习分享 学画画的新手怎么画人物?画人物有哪些技巧! 制作角色表 字符表是一组字符,例如站立图片,面部表情,姿势,所有物和配 ...

  5. java 绘制角色_如何设计角色人物?角色人物绘制设计教程

    轻微课来源:轻微课APP(一个专门学画画的人气平台) 如何设计角色人物?角色人物绘制设计教程!成功设计一个角色需要你拥有全面的技法和一些基本的知识.一个成功的角色设计一方面表现在设计上,另一方面表现在 ...

  6. unity3d人物跳_Unity3D研究院之角色控制器组件研究(二十二)

    Unity3D封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件,几乎不用写一行代码就可以完成一切的操作,神奇吧.使用它的方法如下,首先打开Unity游戏引擎编 ...

  7. Unity3D基础40:人物动画

    前文:https://blog.csdn.net/Jaihk662/article/details/87927195(人物角色模型) 一.Animator组件 官方文档:https://docs.un ...

  8. Unity3D开发——LeRunning的人物角色信息的显示

    ///2015/08/22/// //by    xbw/// //环境 unity 4.6.1 有了人物购买系统要是没有人物信息的显示是不是感觉并没有什么卵用呢,这样呢,我决定做一个信息显示的模块. ...

  9. Unity3D下 仙剑奇侠传三 人物移动及视角控制的尝试实现及补充

    一直很喜欢仙剑系列游戏,觉得仙剑的人物控制也很顺手,学习了Unity后就很想做一个类似于仙剑的人物控制方案. 又特地重玩了仙剑三,现将仙剑三的人物控制操作罗列如下: 键盘A:面向Y轴的顺时针旋转镜头, ...

  10. Unity3D | FPS游戏_人物相关

    这次报名参加了训练营,初次尝试Unity3D的游戏开发,很庆幸的是有老师很详细的指导,拖了一些时间,也总算完成了.依照惯例,继续来写总结,同时这次几乎上学到的都是新知识,在不熟悉的前提下,还比较复杂散 ...

最新文章

  1. Python 解决 :NameError: name ‘reload‘ is not defined 问题
  2. 为什么安装Android SDK后无法安装flatform?
  3. Linux单系统手动分区教程,【教程贴】Linux类系统手动操作篇--标准分区硬盘和目录扩容...
  4. Vagrant 手册之 Provisioning - file 配置程序
  5. Hackintosh 黑苹果安装 基于Thinkpad x201(i5-560M,集显) Legacy Boot Mode安装macOS 10.14 Mojave
  6. 图解项目绩效考核指标及实例模板
  7. 华为网络设备——利用三层交换机实现VLAN间路由配置实例
  8. 制定科学学习计划的重要性
  9. Epoll水平触发(Level Triggered)工作模式和边缘触发(Edge Triggered)工作模式区别
  10. 80C51 单片机使用汇编语言编写点亮和熄灭绿色LED流水灯附PROTEUS8仿真电路及效果(一)
  11. python bi_这5款BI工具,Python工程师最爱用
  12. Swift使用UserDefaults存储,报错 Fatal error: ‘try‘ expression unexpectedly raised an error: Swift.Decoding
  13. AntV X6流程图绘制程序(官方示例纯javascript+html+css)
  14. 用Seam-gen起步(二)
  15. 普通话测试软件测分准吗,普通话学习测试类 | 普通话测试APP,能做到测试、学习提高两不误吗?...
  16. 在Silverlight3中使用SSME重现Big Buck Bunny播放器
  17. 贝勒大学计算机专业,贝勒大学计算机科学贝勒大学计算机科学.pdf
  18. 大学计算机专业游戏本推荐,选这几款就对了!大学生笔记本电脑盘点推荐
  19. 在服务器上利用mmdetection来训练自己的voc数据集
  20. 广州电子厂房净化工程_广州车间厂房净化工程哪家好优惠报价“本信息长期有效”...

热门文章

  1. 逆函数求导公式_反函数求导法则
  2. 分享七个超好用的免费工具网站,每一个都是神器!
  3. Java Promblem/Demand And Solution
  4. 签订房屋买卖居间合同后一方违约购房定金如何处理
  5. 从冬奥会看中国科技:全民感谢的高速摄像机,有何玄机?
  6. 基于Linux的智能聊天与控制设计(毕业设计总结)
  7. celeste实用技巧(第2弹)
  8. quartus 中无法选择USB-Blaster下载程序的问题。
  9. Arm开发板上使用ldd命令
  10. LaTex 在线编辑网站—overleaf简介