如何在处理中与矩形碰撞时使图像消失? [英] How to make image disappear upon collision with rectangle in processing?
问题描述
我正在为我的大学项目制作游戏,我需要帮助。我正在制作一个游戏,用鼠标在y坐标上控制汽车。你必须避开人们并收集在y坐标上移动的硬币。我希望我所放入的人物和硬币的图像在与处理3 中的汽车矩形部分碰撞时消失。这是我的代码:
I am making a game for my college project and I need help. I am making a game where you control a car with your mouse on the y-coordinate. You have to avoid the people and collect coins that are moving on the y-coordinate as well. I want the images I put in of the people and the coins to disappear upon collision with the rectangle part of my car in Processing 3. This is my code:
PImage img,img1,img2,img3,img4,img5;
int x,y;
float ypos=0;
float ypos2=4;
void setup()
{
size(1000,585);
img = loadImage("person1.png");
img1 = loadImage("sun.png");
img2 = loadImage("coin.png");
img3 = loadImage("person2.png");
img4 = loadImage("person3.png");
img5 = loadImage("person4.png");
x=width/2;
y=height/2;
}
void draw()
{
background(170,200,255);
image(img1,720,-30,160,160);
fill(255,240,50);
ellipse(800,50,85,85);
fill(200,255,150);
rect(0,200,1000,400);
fill(0,0,0);
rect((-frameCount%200)*10+1000,130,90,70);
rect((-frameCount%200)*10+1090,100,50,100);
rect((-frameCount%200)*10+1500,130,90,70);
rect((-frameCount%200)*10+1900,100,50,100);
fill(200,200,200);
rect(0,250,1000,90);
fill(200,200,200);
rect(0,350,1000,90);
fill(200,200,200);
rect(0,450,1000,90);
fill(255,100,100);
rect(0,mouseY+0,200,80);
fill(0);
ellipse(50,mouseY+60,60,60);
fill(0);
ellipse(150,mouseY+60,60,60);
fill(100);
ellipse(50,mouseY+60,40,40);
fill(100);
ellipse(150,mouseY+60,40,40);
fill(255,100,100);
arc(100,mouseY+0,160,150,PI,TWO_PI);
fill(160,210,300);
arc(100,mouseY+0,130,130,PI,TWO_PI);
fill(255,100,100);
rect(95,mouseY+0,10,-75);
fill(0);
rect(99,mouseY+0,2,80);
image(img5,(-frameCount%300)*10+2500,250+sin(ypos)*100,120,120);
ypos +=0.01;
image(img4,(-frameCount%450)*5+2000,400+sin(ypos)*140,120,120);
ypos +=0.01;
image(img,(-frameCount%300)*5+1000,300+sin(ypos)*50,120,120);
ypos +=0.01;
image(img2,(-frameCount%100)*20+1000,300-sin(ypos2)*130,50,50);
ypos2 +=0.05;
image(img3,(-frameCount%400)*5+1600,250-sin(ypos)*100,120,120);
ypos +=0.08;
image(img2,(-frameCount%300)*20+1900,300+sin(ypos2)*130,50,50);
ypos2 +=0.05;
}
推荐答案
你需要执行矩形 - 矩形碰撞检测。谷歌是你的朋友,但基本知识如下:
You need to perform rectangle-rectangle collision detection. Google is your friend here, but the basics look like this:
//evaluates to true if rectOne and rectTwo are colliding
if(rectOneRight > rectTwoLeft && rectOneLeft < rectTwoRight && rectOneBottom > rectTwoTop && rectOneTop < rectTwoBottom){
无耻的自我推销:我已经在可用的处理中编写了一个关于碰撞检测的教程这里。
Shameless self-promotion: I've written a tutorial on collision detection in Processing available here.
如果您仍遇到问题,请发布 MCVE 在一个新的问题帖子中以及一个更具体的问题。请注意,这不应该是您的完整项目,而只是一个小例子。尝试创建一个程序,显示两个硬编码的矩形,如果它们发生碰撞会改变颜色。祝你好运。
If you're still having trouble, please post a MCVE in a new question post along with a more specific question. Note that this should not be your full project, but just a small example. Try to create a program that shows two hard-coded rectangles that change color if they're colliding. Good luck.
这篇关于如何在处理中与矩形碰撞时使图像消失?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!