- 最后登录
- 2024-2-2
- 注册时间
- 2017-3-28
- 阅读权限
- 70
- 积分
- 2429
![Rank: 5](static/image/common//star_level3.gif) ![Rank: 5](static/image/common//star_level1.gif)
- 纳金币
- 149
- 精华
- 0
|
一直以来,按下跳跃键就是普通的跳是否已经腻了?
我也想要飞的更高,飞的更高~~~————来自作者模型的独白
SO,今天奉上如何处理不同的跳跃:
这是普通的跳跃:即按一下跳跃键
这是长按跳跃:即按住跳跃键不放
其实呢,短跳跃和长跳跃的用户输入区别只在于是否长按了跳跃键而已,所以我添加了一个计时器(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;
}
好了,今天就到这里了,大家有好的意见可以私信或回复。
|
-
总评分: 纳金币 + 5
查看全部评分
|