2015-01-15 9 views
1

안녕 처리 중 개체와 충돌하려면 글 머리 기호를 어떻게 만듭니 까? 글 머리 기호가 실행되고 변환되고 회전 됨 하지만 dist() 함수를 사용하려고 할 때마다 항상 벡터의 위치가 0이됩니다. 글 머리 기호를 사용하여 개체와 충돌 시키려면 올바른 벡터 위치를 얻는 방법 거리를 만들고 다른 물체를 사라지게 만드시겠습니까?글 머리 기호 상호 작용 처리

여기에 코드

void move(){ 
    passed = passed + time; 
    if (passed > bulletLife) { 
     alive = false; 
    } 

    forward.x = sin(theta); 
    forward.y = -cos(theta); 
    float speed = 15.0f; 
    velocity = PVector.mult(forward, speed); 
    side.add(forward); 

    void display(){ 
     pushMatrix(); 
     translate(side.x, side.y); 
     rotate(theta); 
     stroke(255); 
     ellipse(side.x, side.y, 30, 30); 
     popMatrix(); 
에게

감사 translate() 좌표계 이동하기 때문에 당신은 dist()에서 0을 받고있어

+0

이 코드에서 dist() 함수를 어디에서 사용하고 있습니까? [MCVE] (http://stackoverflow.com/help/mcve)를 게시 할 수 있습니까? –

+0

여기에 어떻게 거리를 계산 PVector kool2 = coordinates(); float d = kool2.dist (위치)/10; } // end display() PVector 좌표() { PVector kool; kool = 새로운 PVector (side.x + cos (theta) * x2, side.y + sin (theta) * y2); 돌아 오는 kool; } // end coordinates – UserMan

답변

1

입니다! 내 생각에, 귀하의 질문보다, 당신은 귀하의 코드를 전반적으로 재고해야한다고 생각합니다. side.x, side.y (popMatrix()에 전화 할 때까지 0,0이 될 것입니다.)로 변환 한 다음 실제 위치에서 오프셋 된 side.x, side.y에 타원을 그립니다.

즉, 위치가 100,200 인 경우 실제로는 200,400에 개체를 그립니다.

당신이 translate() 부분을 건너 뛸 경우 개체 그릴이를 사용할 수 있습니다

if (dist(side.x, side.y, bullet.x, bullet.y) == 0) { 
    collision = true; 
} 
else { 
    collision = false; 
} 

또한 많이 가지고 내 collision-detection functions for Processing를 볼 수 있습니다

void display() { 
    stroke(255); 
    ellipse(side.x, side.y, 30,30); 
} 

을 그리고이 충돌을 확인 도움이 될만한 예제가 있습니다.

+0

그 모든 것에 감사하지만 번역 된 글 머리표를 건너 뛰어도 무작위로 표시되거나 적어도 우주선 위치에 표시되지 않습니다. – UserMan

+0

질문에 대한 것이 아닙니다. 도움을 얻으려면 처리 포럼에이 정보를 가져 가야할까요? 방향/속도에 하나를 사용하는 것과 같이 'PVectors'를 추가 할 수도 있습니다. – JeffThompson