如何在处理中与矩形碰撞时使图像消失?

问题描述 投票:0回答:1

我正在为我的大学项目制作游戏,我需要帮助。我正在制作一个游戏,用鼠标在y坐标上控制汽车。您必须避开人员并收集在y坐标上移动的硬币。我希望我处理的人物和硬币的图像在处理3中与我的汽车的矩形部分碰撞时消失。这是我的代码:

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;
}
image processing
1个回答
0
投票

您需要执行矩形 - 矩形碰撞检测。谷歌是你的朋友,但基本知识如下:

//evaluates to true if rectOne and rectTwo are colliding
if(rectOneRight > rectTwoLeft && rectOneLeft < rectTwoRight && rectOneBottom > rectTwoTop && rectOneTop < rectTwoBottom){

无耻的自我推销:我在处理可用的here上写了一个关于碰撞检测的教程。

如果您仍然遇到问题,请在新的问题帖子中发布MCVE以及更具体的问题。请注意,这不应该是您的完整项目,而只是一个小例子。尝试创建一个程序,显示两个硬编码的矩形,如果它们发生碰撞会改变颜色。祝好运。

© www.soinside.com 2019 - 2024. All rights reserved.