How to make image disappear upon collision with re

2019-08-28 12:47发布

问题:

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;
}

回答1:

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.

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.