4
선과 원 사이의 충돌을 확인하려고합니다. 원이 선에 닿으면 부울을 참으로 변경하고 한 번 터치하지 않으면 변경됩니다. 거짓으로 돌아 간다. 나는 캔버스와 표면을 사용하고 있습니다. 여기 캔버스 안의 선과 원의 충돌을 확인하십시오.
작동 및 오류에 종료되지 않은 충돌을 확인하는 내 코드입니다 : 레벨에 대한private void update(Canvas c) {
ball.update(c, checkLinesCollision(values.level1, ball.getX(), ball.getY()));
//takes a canvas, and a boolean
}
boolean checkLinesCollision(float[] f,float x,float y){
int c = 0;
for(int i = 0; i < f.length; i+=4){
float x1 = f[i];
float y1 = f[i+1];
float x2 = f[i+2];
float y2 = f[i+3];
if (x> x1 && x<x2 && y>y1 && y>y2){
c++;
}
}
if(c>0){return true;}else{return false;}
}
값 : 이제 충돌 업데이트에서 처리
@Override
public void run() {
while(runnable)
{
if(!holder.getSurface().isValid()){
continue;
}
Canvas mCanvas = holder.lockCanvas();
update(mCanvas);
values = new Values(mCanvas);
createPaints();
drawBackground(mCanvas);
drawObjects(mCanvas);
holder.unlockCanvasAndPost(mCanvas);
}
}
float yLow = c.getHeight()-c.getHeight()/4;
level1 = new float[]{0,yLow,c.getWidth(),yLow,
40,c.getHeight()/2,300,c.getHeight()/2};
볼 업데이트 기능 :
public void update(Canvas c, boolean b) {
if(b){
dy=-dy;
b = false;
}
y -= dy;
dy--;
}
이제 logcat에 따르면 문제는 주요 업데이트 기능에 있습니다.
잘못된 기능을 사용하고 있다고 생각합니다. 문제를 해결하려면 어떻게해야합니까?
감사합니다.
정확히 logcat 말하는 무엇입니까? – 0gravity
@ 0gravity 내가 안드로이드 런타임 문제가있는 정확한 위치는 \t \t입니다. (. – Baruch