Я пытаюсь заставить игрока вращаться, но никак не могу понять. Думаю, я еще не подсчитал, ха-ха. Я перейду к делу.
Я пытался заставить моего игрока смотреть на мышь. Если я не перемещаю игрока, поворот в порядке, но когда я начинаю двигаться, игрок движется по кругу.
В моем классе Player
У меня есть следующие типы данных:
PApplet parent; //So the program knows which PApplet to draw on, I guess.
private float x,y;
/*
* For the Camera to follow the player
*/
private float cameraX;
private float cameraY;
и у меня есть метод cameraFollow
:
public void cameraFollow() {
cameraX = x * -1 + parent.width / 2; // Calculates so the camera
cameraY = y * -1 + parent.height / 2; // follows the player
parent.translate(cameraX, cameraY); // Translate the window position
}
Теперь перейдем к проблеме, когда я пытаюсь повернуть плеер лицом к мыши. Если я не перемещаю игрока, вращение в порядке, но когда я двигаюсь, игрок начинает двигаться по кругу, когда я двигаю мышью.
public void render() {
//Rotate towards mouse
float angle = PApplet.atan2(cameraY-parent.mouseY, cameraX-parent.mouseX);
parent.pushMatrix();
parent.translate(x,y);
parent.rotate(angle-PApplet.HALF_PI);
//Body
parent.noStroke(); // no black lines around the ellipse
parent.fill(playerColor.getRGB()); // Sets the color of the player
parent.ellipseMode(PConstants.CENTER); // Makes the ellipse centered
parent.ellipse(x, y, 20, 20); // creates an ellipse
//Arms
parent.stroke(0.5f);
parent.fill(armsColor.getRGB());
parent.ellipseMode(PConstants.CENTER);
parent.ellipse(x-5, y-5, 5, 5);
parent.ellipse(x+5, y-5, 5, 5);
parent.popMatrix();
}