2017-12-22 25 views
0

Processing3을 사용하여 대학 프로젝트 게임을 만들고 있습니다. 게임은 x 축에서만 움직이는 마우스로 제어하는 ​​자동차로 구성됩니다. 나는 사람과 동전에 추가했고 그들은 또한 x 축을 위아래로 움직이고있다. 직사각형이 움직이는 이미지에 닿으면 점수를 올리려면 어떻게해야합니까? 나는 점수가 올라 가기를 원할 때 직사각형 내가 만들었던 차의 부품 의 이미지가 길에서 위아래로 움직이고있다. 나는 솔직히 그 주위에 머리를 얻을 수 없기 때문에 최대한 많은 도움을 주실 것입니다. 점수와 함께 내 문제를 해결하려고 시도한 부분을 강조했습니다.사각형이 움직이는 이미지에 닿으면 점수를 올리려면 어떻게해야합니까?

PImage sun,person1,person2,person3,person4,**coin**; 
    int x,y; 
    float ypos=0; 
    float ypos2=4; 
    **int coin_x,coin_y,coin_count; 
    int score=0,lives=3;** 

void setup() 
    { 
    size(1000,585); 
    person1 = loadImage("person1.png"); 
    sun = loadImage("sun.png"); 
    **coin = loadImage("coin.png");** 
    person2 = loadImage("person2.png"); 
    person3 = loadImage("person3.png"); 
    person4 = loadImage("person4.png"); 
    x=width/2; 
    y=height/2; 
    } 
void draw() 
{ 
    background(170,200,255); 
    image(sun,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); 

    //vvvvvvvvv The car vvvvvvvvvvv 
    **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);** 
    //^^^^^^^^^The car^^^^^^^^^ 


    image(person4,(-frameCount%300)*10+2500,250+sin(ypos)*100,120,120); 
    ypos +=0.01; 
    image(person3,(-frameCount%450)*5+2000,400+sin(ypos)*140,120,120); 
    ypos +=0.01; 
    image(person1,(-frameCount%300)*5+1000,300+sin(ypos)*50,120,120); 
    ypos +=0.01; 
    **image(coin,coin_x+(-frameCount%100)*20+1000,coin_y+300-sin(ypos2)*130,50,50);** 
    ypos2 +=0.05; 
    image(person2,(-frameCount%400)*5+1600,250-sin(ypos)*100,120,120); 
    ypos +=0.08; 
    **image(coin,coin_x+(-frameCount%300)*20+1900,coin_y+300+sin(ypos2)*130,50,50); 
    ypos2 +=0.05;** 


    **if((coin_x>10)&&(coin_x<10)) 
    { 
    if(abs((coin_y+10)-(mouseY+0))<25) 
    { 
     coin_count++; 
    } 
    }** 


    **textSize(30); 
    fill(0); 
    text("Score:"+coin_count,0,25);** 


} 
+0

크로스 포스트 사이를 연결하십시오. 이 질문은 여기에 게시되었습니다 : https://forum.processing.org/two/discussion/25682/how-can-i-make-the-score-go-up-when-a-rectangle-hits-a- 동영상 –

답변

0

이 질문에 대한 답은 the answer to your first question과 동일합니다 : 여기에 내 코드입니다. 직사각형 - 사각형 충돌 감지를 수행해야합니다.

구글은 아직 여기 당신의 친구이지만, 기초는 다음과 같다 :

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

뻔뻔 자체 승진 : 나는 here 사용할 수 처리에 충돌 감지에 대한 자습서를 작성했습니다.

추가하는 방법을 모르는 경우 작게 시작해야합니다. 충돌하는 경우 색상을 변경하는 두 개의 하드 코딩 된 사각형을 표시하는 프로그램을 만들어보십시오. 다음 단계로 넘어 가기 전에 완벽하게 작동하도록하십시오.

문제가 계속되는 경우보다 구체적인 질문과 함께 새로운 질문 게시글에 MCVE을 게시하시기 바랍니다. 이것은 전체 프로젝트가 아니라 작은 예제 일뿐입니다.