Android Studio에서 화면 가운데를 회전하는 개체가있는 게임을 작업 중입니다. 내 문제는 개체를 회전 한 후 어떤 이유로 x 및 y 위치가 동일하게 유지 된 것입니다. 캔버스가 회전하고 있기 때문에 추측하고 있습니다. 캔버스에서 동일한 점이 남아 있기 때문입니다. 충돌 감지를 계산하려면 x와 y 좌표가 필요합니다. x와 y가 변경되지 않았다는 것을 깨달은 후에 나는 기본 trig를 사용하여 x와 y를 계산할 함수를 작성하려고 시도했지만 어떤 이유로 든 이상한 값을 뱉어 내고있었습니다 (또한 아래에 첨부되어 있습니다). 내 질문은 기본 캔버스에서이 개체의 x 및 y 위치를 어떻게 찾습니까? 고급 감사합니다, 코드는 아래 있습니다.Android Studio에서 회전 된 객체의 (x, y)를 어떻게 얻을 수 있습니까?
`private int x; private int y;
private int rotate;
private int width;
private int height;
private int color = Color.rgb(226, 255, 243);
private Paint paint = new Paint();
public Player(){
rotate = 0;
width = Constants.width/10;
height = Constants.height/50;
x = Constants.width/2 - width/2;
y = Constants.height/2 + Constants.height/8;
}
public void setRotate(int rotate){
this.rotate = rotate;
}
public int getRotate(){return rotate;}
public int getX(){return x;}
public int getY(){return y;}
public int getWidth(){return width;}
public int getHeight(){return height;}
public void update(){
if(rotate >= 360){
rotate = 0;
}
}
public void draw(Canvas canvas){
paint.setColor(color);
canvas.save();
canvas.rotate(rotate, Constants.width/2, Constants.height/2);
canvas.drawRect(x, y, x + width, y + height, paint);
canvas.restore();
}
아래의 코드는 x와 y 좌표를 찾는 내 시도이지만 이상한 값만 나오고 문제를 찾을 수 없습니다. 이 코드는 저의 주요 클래스입니다.
`
private int getPlayerX(int rotation){
double angleA;
double angleC;
double sideC;
double sideA;
angleA = 180 - ((180 - rotation) + 90);
sideC = Constants.width/2 + Constants.height/8;
angleC = 180 - rotation;
sideA = ((Math.sin(angleA) * sideC))/(Math.sin(angleC));
playerx = Constants.width/2 + (int) sideA;
return playerx;
}
private int getPlayerY(int rotation){
double sideC;
double angleC;
double angleB;
double sideB;
sideC = Constants.width/2 + Constants.height/8;
angleC = 180 - rotation;
angleB = 90;
sideB = sideC * (Math.sin(angleB))/(Math.sin(angleC));
playery = Constants.height + (int) sideB;
return playery;
}
'android.graphics.Matrix' API를 사용합니다 – pskink
객체를 회전 시키지만 canvas.rotate()와 마찬가지로 x와 y를 같은 위치에 유지합니다. 기능. –
실제로 달성하기를 원하십니까? 캔버스를 회전시킨 다음 무언가를 그린 다음 ...? – pskink