Je travaille sur un jeu dans Android Studio dans lequel un objet tourne autour du centre de l'écran. Mon problème est que pour une raison quelconque, après avoir fait tourner l'objet, les positions x et y sont restées les mêmes (je suppose que parce que la toile tourne, elle a toujours les mêmes points dans cette toile). J'ai besoin des coordonnées x an y pour calculer la détection de collision. Après avoir réalisé que x et y ne changeaient pas, j'ai essayé d'écrire une fonction qui calculerait le x et le y en utilisant le trig de base, mais elle crachait des valeurs étranges pour une raison quelconque (également ci-dessous). Ma question est comment puis-je trouver la position x et y de cet objet dans la toile principale? Merci à l'avance, le code est ci-dessous.Comment puis-je obtenir (x, y) d'un objet dans Android Studio qui a été pivoté?
`private int x; int y privé;
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();
}
Le code ci-dessous est ma tentative de trouver les coordonnées x et y, mais il ne recrache des valeurs étranges et je ne peux pas trouver le problème. Ce code est ma classe principale.
`
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;
}
utilise l'API 'android.graphics.Matrix' – pskink
Il fait pivoter l'objet tout en conservant le x et le y au même endroit, comme avec canvas.rotate(); fonction. –
Que voulez-vous réaliser réellement? tourner la toile, puis dessiner quelque chose, alors ...? – pskink