Hallo zusammen,
Also ich bin zurzeit ein kleines Spiel am programmieren so im Stil von Diablo II, nun hab ich aber ein kleines Problem
Man soll sich mit der Maus im Spiel bewegen können, also irgendwo hin klicken und dann läuft der Player dort hin. Ich hab so gelöst wie ihr hier unten sehen könnt. (Die if abfrage ist wichtig) Nur ist das eine nicht ganz so schöne Lösung finde ich und es funktioniert auch nicht immer gleich. Hat jemand eine Idee wie ich das schön Lösen könnte?
Also ich bin zurzeit ein kleines Spiel am programmieren so im Stil von Diablo II, nun hab ich aber ein kleines Problem
Man soll sich mit der Maus im Spiel bewegen können, also irgendwo hin klicken und dann läuft der Player dort hin. Ich hab so gelöst wie ihr hier unten sehen könnt. (Die if abfrage ist wichtig) Nur ist das eine nicht ganz so schöne Lösung finde ich und es funktioniert auch nicht immer gleich. Hat jemand eine Idee wie ich das schön Lösen könnte?
Code:
@Override
public void moveCharacter(double deltaT, double x, double y, Game game) {
super.moveCharacter(deltaT, x, y, game);
double distanceOnScreenX = x - (game.WIDTH / 2 - super.imagesArrayList.get(8)[0].getWidth() / 2)
- super.actualImage.getWidth() / 2;
double distanceOnScreenY = y - (game.HEIGHT / 2- super.imagesArrayList.get(8)[0].getHeight())
- super.actualImage.getHeight();
double distanceOnMapX = game.getMouseOnMapX() - super.xOnMap - super.actualImage.getWidth() / 2;
double distanceOnMapY = game.getMouseOnMapY() - super.yOnMap - super.actualImage.getHeight();
angel = Math.toDegrees(Math.atan2(distanceOnScreenY, distanceOnScreenX));
double moveDistance = super.speed * deltaT;
double moveDistanceX = moveDistance * Math.cos(Math.toRadians(angel));
double moveDistanceY = moveDistance * Math.sin(Math.toRadians(angel));
if (Math.abs(distanceOnMapX) < 5 && Math.abs(distanceOnMapY) < 5) {
super.isMoveing = false;
return;
} else {
super.isMoveing = true;
}
this.yOnMap += moveDistanceY;
this.xOnMap += moveDistanceX;
}