我对处理很新,需要一些帮助。我试图建立一个简单的踢球游戏。简单的想法:当球击中黄色球杆时,球会反弹。让球保持活力#34;你必须使它反弹黄色条。我已成功找到弹跳球的代码(它现在在窗口的底部反弹),而且我还成功创建了一个随鼠标移动的条形图。到目前为止我能够创造的是让球实际反弹。在这里寻找帮助!!谢谢!
float ballX = 100;
float ballY = 0;
float h = 50;
int x, y;
//create a variable for speed
float speedY = 2;
void setup() {
size(400,400);
smooth();
noStroke();
// change the mode we draw circles so they are
// aligned in the top left
ellipseMode(CORNER);
}
void draw() {
//clear the background and set the fill colour
background(0);
fill(255);
//draw the circle in it's current position
ellipse(ballX, ballY, h,h);
//add a little gravity to the speed
speedY = speedY + 0.5;
//add speed to the ball's
ballY = ballY + speedY;
//bar
x = mouseX;
y = mouseY;
fill(255, 255, 0);
rect(x, y, 50, 10);
if (ballY > height - h) {
// set the position to be on the floor
ballY = height - h;
// and make the y speed 90% of what it was,
// but in the opposite direction
speedY = speedY * -0.9;
//switch the direction
//speedY = speedY;
}
else if (ballY <= 0) {
// if the ball hits the top,
// make it bounce off
speedY = -speedY;
}
}
答案 0 :(得分:0)
我警告你不要只是在互联网上找到的复制粘贴代码。你必须真正理解它正在做什么,否则当你的代码变得更复杂时,你会遇到很多麻烦。尝试自己重写逻辑,这样就可以准确理解弹跳的工作原理。
为了弄清楚球是否与球拍相交,我建议拿出一张纸和一支铅笔并画一些例子。尝试找出球和桨在交叉时的位置和大小的模式。
但基本上,你需要检查球是否在矩形的边界“内”。如果球位于桨叶左侧的右侧,桨叶右侧的左侧,桨叶顶部下方以及桨叶底部上方,则属实。