我的总体目标是创造一个3路' pong'游戏。将使用三角形边框,其中3个拨片沿着3个侧面中的每一个移动。一个球将在这个三角形内弹跳,并且桨将用于尝试阻止球击中三角形的每一侧。首先,我试图让球在三角形的边界内弹跳。我现在只有一个弹跳球。任何人都可以建议如何推进这项工作吗?
float x = 100;
float y = 100;
float xspeed = 1;
float yspeed = 3.3;
void setup() {
size(500,500);
}
void draw() {
background(255);
fill(255,10);
rect(0,0,width,height);
x = x + xspeed;
y = y + yspeed;
if ((x > width) || (x < 0)) {
xspeed = xspeed * -1;
}
if ((y > height) || (y < 0)) {
yspeed = yspeed * -1;
}
fill(175);
ellipse(x,y,16,16);
}
答案 0 :(得分:1)
您必须更改碰撞检测代码,以便检测圆圈何时与三角形边界碰撞而不是屏幕边缘。
将三角形定义为三个线段,然后您可以专注于检测圆与每个线段之间的碰撞。谷歌是你的朋友,但this question有很多答案。
然后,您可能希望反映该线周围的点,以便圆圈以基于线段的角度反弹。同样,谷歌是你的朋友,但是here是另一个带有大量答案的问题。
我建议将您的问题分成更小的步骤,并一次关注一个问题。首先得到一个程序工作,只检查一个圆是否与一个线段发生碰撞:首先尝试硬编码点,然后可以使用光标位置,然后按照弹跳球的方式工作。