如何在处理中与矩形碰撞时使图像消失? [英] How to make image disappear upon collision with rectangle in processing?

查看:165
本文介绍了如何在处理中与矩形碰撞时使图像消失?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为我的大学项目制作游戏,我需要帮助。我正在制作一个游戏,用鼠标在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆