- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习制作一个简单的游戏,并成功编写了一个非常基本的弹跳运动,其中按下跳跃键后,玩家回到地面并再次弹起,从而创建了一种愚蠢的物理错觉。我遇到的问题是如何实现它,以便玩家弹跳不是一次而是两次,第二次弹跳速度较小。换句话说,现在的代码(我稍后会展示)非常简单:有一个“跳跃”标志,一旦进行跳跃,该标志就会变为真,并且在下一帧上会检查它是否是是的,如果是的话,我只需在 y 轴速度上添加一些速度,然后玩家就会反弹回来。但我似乎找不到一种方法来编码第二次反弹,因为一切都是逐帧发生的。我需要为第二次弹跳添加更小的速度,但只有在第一次弹跳发生之后,我现在得到的只是这些速度和一次弹跳的总和。我不知道如何欺骗程序添加第一个速度,“等待”直到它落地,然后添加第二个速度,然后绘制下一帧。
这是单次退回的代码(有效)
if (y <= 48) { // if player is on the ground
yspeed = 0;
y = 48;
// Friction on ground
if ((!Keyboard.isKeyDown(Keyboard.KEY_LEFT)) && xspeed < 0) xspeed = xspeed * 0.925;
if ((!Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) && xspeed > 0) xspeed = xspeed * 0.925;
if (jumped == true)
{
yspeed += 4.2;
jumped = false;
}
// Jump
if (Keyboard.isKeyDown(Keyboard.KEY_UP))
{
yspeed = 10;
jumped = true;
}
最佳答案
我会将代码重新排列为如下所示:
boolean airborne = false;
while (true) // the main game loop
{
if (y <= 48 && airborne) // if player just hit the ground
{
// Perform the "bounce" by changing their vertical direction and decreasing its magnitude
ySpeed = -ySpeed/2.0;
// This will stop them from bouncing infinitely. After the bounce gets too small,
// they will finally land on the ground. I suggest you play around with this number to find one that works well
if (Math.abs(ySpeed) <= 0.5)
{
// Stop the bouncing
ySpeed = 0;
// Place them on the ground
airborne = false;
y = 48;
}
}
// Apply friction if they are on the ground
if (!airborne)
{
// Friction on ground
if ((!Keyboard.isKeyDown(Keyboard.KEY_LEFT)) && xspeed < 0) xspeed = xspeed * 0.925;
if ((!Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) && xspeed > 0) xspeed = xspeed * 0.925;
}
// Apply a jump action if they're pressing the jump button while on the ground
if (Keyboard.isKeyDown(Keyboard.KEY_UP) && !airborne)
{
airborne = true;
yspeed = 10;
}
}
因此,在这种情况下,您不需要跟踪它们是否刚刚执行了跳跃,而是跟踪它们是否在空中。
我假设您有某种重力常数,您需要从每帧的 ySpeed 变量中减去该常数。每帧,如果它们在地面上,您需要将它们的 ySpeed 重置为零,或者在它们在地面上时不施加重力
关于java - 如何使物体多次从地面弹起(Java 和 LWJGL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23177510/
当内容大小小于 View 框架并且拖动它时,如何简单地让 ScrollView 弹起? 例如 iPhone 的应用搜索结果。 最佳答案 参见UIScrollView (paging mode) bou
我通过以下方式使用悬停: $('.item a').hover(function () { $('#overlay').slideDown(); }, function
我是一名优秀的程序员,十分优秀!