查看: 1286|回复: 0
打印 上一主题 下一主题

[经验分享] 按住跳跃键就能更高更远!!!

[复制链接]

5

主题

7

听众

2429

积分

中级设计师

Rank: 5Rank: 5

纳金币
149
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2017-9-27 16:27:52 |只看该作者 |倒序浏览
一直以来,按下跳跃键就是普通的跳是否已经腻了?
我也想要飞的更高,飞的更高~~~————来自作者模型的独白
SO,今天奉上如何处理不同的跳跃:
这是普通的跳跃:即按一下跳跃键
图片1.png
这是长按跳跃:即按住跳跃键不放
图片2.png
其实呢,短跳跃和长跳跃的用户输入区别只在于是否长按了跳跃键而已,所以我添加了一个计时器(0.5秒),用来判断用户按跳跃键按了多久。当然你们会说,按下跳跃键的一瞬间也会有时间,所以为了容错我定了个容错时间0.1秒,也就是说,当跳跃键被按下0.1秒后开始计算跳跃增量,增加上限是0.5秒。通过增加阻力来增加滞空时间,这样可以跳得更远,重复施加新的力可以跳得更高。当增量时间结束后将阻力修正。
当然,有一个问题是如果我间断的反复按下跳跃键貌似也能触发长跳跃,这个问题我给出的解决方案是检查是否处于可跳跃阶段。
                if (Input.GetKey(KeyCode.Space)) {
                        if (tiao) {
                                time_tiao -= Time.deltaTime;
                                if (time_tiao > 0&&time_tiao<0.4f) {
                                        GetComponent<Rigidbody> ().drag += 1;
                                        GetComponent<Rigidbody> ().AddForce (new Vector3 (0, 30, 0));
                                } else {
                                        GetComponent<Rigidbody> ().drag = 0;
                                }
                        }

                        if (tiaoyue > 0) {
                                tiao = true;
                                GetComponent<Rigidbody> ().AddForce (new Vector3 (0, 180, 0));
                                tiaoyue--;
                        }
                } else {
                        tiao = false;
                        GetComponent<Rigidbody> ().drag = 0;
                }

好了,今天就到这里了,大家有好的意见可以私信或回复。

图片3.png (105.54 KB, 下载次数: 208)

代码

代码

已有 1 人评分纳金币 收起 理由
艾西格亚 + 5 赞一个!

总评分: 纳金币 + 5   查看全部评分

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-6-17 23:53 , Processed in 0.093579 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部