- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?
?
Unity中的跳跃设计
?
?
《Cloud Critters》是一个跳跃类的游戏。我们的目的是将一些类似《几何大战》这种具有潜质的游戏同《Flappy Bird》和《Don’t Touch the Spikes》这些单点跳跃游戏进行细致的融合。
在《Flappy Bird》中,用户每次点击都会使小鸟上升一个固定的高度。我们在游戏《Cloud Critters》开发前期就决定可以控制角色跳跃的高度,就和《超级玛丽》或者《密特罗德》一样。这样将会给玩家更多的操作空间。
在进入如何实现这样一个可以正确控制跳跃高度的之前,我们先看一下这一段代码,之后的示例都将基于它。
注意:这里为了示范方便,我们将在Update函数中启用跳跃协程(JumpRoutine)。
[C#]? 纯文本查看? 复制代码
?
?
1
2
3
4
5
6
7
voidUpdate()
{
if (jumpButtonDown !jumping)
{
jumping= true ;
StartCoroutine(JumpRoutine());
}
}
在实际的工程中,你最好在FixedUpdate中处理物理运动相关的行为。
匀加速情况
?
[C#]? 纯文本查看? 复制代码
?
?
01
02
03
04
05
06
07
08
09
10
11
12
IEnumeratorJumpRoutine()
{
rigidbody.velocity= Vector2.zero;
floattimer = 0;
while (jumpButtonPressed timer jumpTime)
{
//Adda constant force every frame of the jump
rigidbody.AddForce(jumpVector);
timer+= Time.deltaTime;
yieldreturn null ;
}
jumping= false ;
}
优点:
跳跃高度的最小最大值差距较大,玩家可以更好的控制角色跳跃的高度和距离。
缺点:
每一帧都给角色施以一个固定的外力,导致角色在竖直方向上的速度会越来越快,就像背着一个喷气装置。
类抛物情况
?
[C#]? 纯文本查看? 复制代码
?
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
IEnumeratorJumpRoutine()
{
//Setthe gravity to zero and apply the force once
floatstartGravity = rigidbody.gravityScale;
rigidbody.gravityScale= 0;
rigidbody.velocity= jumpVector;
floattimer = 0f;
while (jumpButtonPressed timer jumpTime)
{
timer+= Time.deltaTime;
yieldreturn null ;
}
//Setgravity back to normal at the end of the jump
rigidbody.gravityScale= startGravity;
jumping= false ;
}
优点:
在跳起的过程中不会一直加速。在开始跳跃的那一刻,角色就会获得最大的跳跃速度,当用户松开按键或者达到跳跃最大高度后,便落下。这种跳跃形式和《超级玛丽》 比较接近。
缺点:
在玩家松开跳跃键后,角色还会持续几帧跳跃动画,继续上升直到向上的速度降为零才下落。这意味着即使你只是快速按一下跳跃键,角色也会跳起相当高的一端距离。
类抛物情况改进版
[C#]? 纯文本查看? 复制代码
?
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
IEnumeratorJumpRoutine()
{
//Addforce on the first frame of the jump
rigidbody.velocity= Vector2.zero;
rigidbody.AddForce(jumpVector,ForceMode2D.Impulse);
//Waitwhile the characters y-velocity is positive (the character is goi
您可能关注的文档
- TypeScript设计模式之发布-订阅模式.docx
- UCloud基于Linux内核新特性的下一代外网网关设计及相关开源工作.docx
- UI-自动化常用设计模式.docx
- UI之九宫格设计思路与实现技巧要点.docx
- UI必不可少手机计算器界面设计可学习案例.docx
- UI界面设计中的渐变.docx
- UI自动化常用设计模式.docx
- UI设计中的渐变-第1篇.docx
- UI设计师作品准备以及面试攻略.docx
- UI设计师必备的五款界面设计工具.docx
- 重庆新速达物业服务集团股份凯里公司招聘笔试题库2024.pdf
- 浙江杭州千岛湖泰众肉类食品有限公司招聘笔试题库2024.pdf
- 陕西新华出版传媒集团新华书店分公司招聘笔试题库2024.pdf
- 宁夏海原县肉牛产业发展集团有限公司招聘笔试题库2024.pdf
- 浙江温岭市化工轻工建筑材料有限公司招聘笔试题库2024.pdf
- 中航飞机汉中航空零组件制造有限公司招聘笔试题库2024.pdf
- 山东海阳市海昇矿产资源开发有限公司招聘笔试题库2024.pdf
- 山东潍坊寿光市公共交通运输有限公司招聘笔试题库2024.pdf
- 内蒙古察右前旗农业投资开发有限公司招聘笔试题库2024.pdf
- 线上清明祭英烈活动策划.pptx
文档评论(0)