In my game I have a player object and an enemy object. The enemy object, when initialized is supposed to find the current location of the player at that specific time and head towards that spot, ultimately passing or hitting the player at which point it'll go offscreen.
In order to do this I've figured I'm going to have to use trigonometry however I can't seem to figure out what to do as my equation for direction and speed never aligns with the position of the player.
Here's what I have..
direction = Math.atan((this.X_POS-plr.X_POS)/(this.Y_POS-plr.Y_POS));
speedX = (int) (speed * Math.cos(direction));
speedY = (int) (speed * Math.sin(direction));
- "this" is the enemy and "plr" is the player.
- "direction" is the angle to the player
- "speedX" and "speedY" is the amount to translate each game tick. (deltaX, deltaY)
Here's my rough notes if it helps:
If anyone has any idea how to properly do this I'd appreciate the help, thanks!
//Inside the food/enemy class:
//inside the constructor
direction = Math.random() * 2.0 * Math.PI; //x/y position of player, xy position of food
direction = Math.atan((this.X_POS-plr.X_POS)/(this.Y_POS-plr.Y_POS));
speedX = (int) (speed * Math.cos(direction));
speedY = (int) (speed * Math.sin(direction));
//inside update position method
X_POS += speedX;
Y_POS += speedY;
//inside draw player method
g.setColor(rim);
g.fillOval(X_POS-radius-3, Y_POS-radius-3, (radius*2)+6, (radius*2)+6);
g.setColor(center);
g.fillOval(X_POS-radius, Y_POS-radius, radius*2, radius*2);
//Inside the player class X_POS and Y_POS are set to 200 each.
Then, inside the run method of the main class every 15 milseconds the update position method and draw method is called.
Well, since nobody else seems to know how I found out how myself.
Thanks for the help!