我有一个if
语句,用于检查碰撞:
if (BallY == y && BallX == x) // check for collision
{
x = 80; // reset x to initial
y = 240; // reset y to initial
z = 100; //reset z to initial
}
我在for
语句中有一个if
循环:
if (BallY == y && BallX == x) // check for collision
{
x = 80; // reset x to initial
y = 240; // reset y to initial
z = 100; //reset z to initial
for (int i=50; i<width; i+=80)
{
fill(250,0,0);
ellipse(i, 50, 70, 70);
}
}
因此,重点是在碰撞发生后在屏幕顶部绘制一条圆圈。但是,这段代码只会瞬间绘制它们然后就会消失。如果发生碰撞,我怎么能让他们留下来?
答案 0 :(得分:1)
您可能希望使用跟踪球是否发生碰撞的boolean
值。检测到碰撞时将其设置为true
,然后检查值以确定要绘制的内容。这是一个简化的例子:
boolean drawRed = false;
void draw() {
if (mouseY > height/2) {
drawRed = true;
}
if (drawRed) {
background(255, 0, 0);
}
}
此代码默认情况下绘制灰色背景,但如果鼠标进入窗口的下半部分,则会变为红色。即使您将鼠标移回顶部,它也会保持红色。
这只是一个简单的例子,但想法是一样的:使用变量来跟踪草图的状态,在满足条件时设置该变量,并检查该变量以决定要绘制的内容。
顺便说一句,你的碰撞检测有点可疑。你可能不想检查球是否在一个确切的位置。相反,你可能想检查球是否与某个区域重叠。 Here是处理中可能有用的碰撞检测指南。
如果仍然无法使其正常运行,请将问题范围缩小到MCVE,而不是发布已断开连接的代码段或完整草图。祝你好运!