【发布时间】:2017-05-25 00:25:14
【问题描述】:
我编写了一个程序,该程序显示一个球落下,然后在落地后反弹。有时当它弹起时,它并没有达到它的初始高度。这是一个 JS fiddle 来说明我的意思:
https://jsfiddle.net/abq4zvsx/
我希望球表现得好像完全有弹性。也就是说,我希望它从某个初始高度开始,并在弹跳时再次达到该初始高度,以此类推,直到永远。
2017 年 5 月 25 日编辑: 我从绘图函数中删除了一些方法。只有 4 个在运行:绘制、重力和反弹决定了图形。 ballArray.heightStamp 触发将新线添加到数组 lineArray 以绘制球每次反弹时达到的高度。
我改变了小提琴来反映这一点。我删除了一些可能掩盖了最相关代码的方法。
2017 年 5 月 30 日编辑:我写的不同。我不太熟悉这样写,所以这个例子要简单得多。完整代码如下:
void setup() {
size(800, 400);
}
class Ball {
float x = 400;
float y = 50;
float d = 14;
float r = 7;
float vy = 0;
float ay = 0.2;
void display() {
ellipse(x, y, d, d);
}
void gravity() {
vy += ay;
y += vy;
}
void bounce() {
if ((y+r)>height) {
vy *= -1;
y = height - r;
}
}
} //closing ball class
Ball ball = new Ball();
void draw() {
background(235, 245, 255);
ball.display();
ball.gravity();
ball.bounce();
}
2017 年 6 月 2 日编辑:我已经更仔细地检查了向其他报告类似问题的人提供的解决方案,但他们并没有解决我的问题。上面的代码与小提琴中的代码不同,但我认为它们的本质是一样的。
【问题讨论】:
-
如果您发布一个较小的示例,您将会有更好的运气。只是一组简单的变量,显示了一个弹跳的球,而不是处理所有力的所有函数。
-
谢谢。我猜其他的东西让我们很难看出什么是相关的。我也换了小提琴。
-
你的问题是什么,@Jozurcrunch?
-
我希望球每次反弹时都能达到初始高度。