# 2D Aiming accuracy

This topic is 2506 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hello,

I am making a 2D top down shooter and am struggling with aimed shots by enemies. At the moment it works OK but it's not very accurate. Here is my code: (startX,startY,playerX,playerY are class variables). Can anybody help me make this more accurate? Math's isn't my best subject!

private void aimShot() { this.setLaserX(startX); this.setLaserY(startY); float distanceX = startX - playerX; float distanceY = startY - playerY; boolean xIsNegative = false; boolean yIsNegative = false; if (distanceX < 0) { xIsNegative = true; distanceX = -distanceX; } if (distanceY < 0) { yIsNegative = true; distanceY = -distanceY; } if (distanceX == 0) { distanceX = 1; } if (distanceY == 0) { distanceY = 1; } float ratio; float speedX, speedY; if (distanceX > distanceY) { ratio = distanceY/distanceX; speedX = 10*(1-ratio); speedY = 10*ratio; } else { ratio = distanceX/distanceY; speedY = 10*ratio; speedX = 10*(1-ratio); } if (xIsNegative) { speedX = -speedX; } if (yIsNegative) { speedY = -speedY; } intSpeedX = Math.round(speedX); intSpeedY = Math.round(speedY); }

##### Share on other sites
I managed to fix it myself. One thing I did was store X and Y coordinates as floats and only rounded off when actually drawing. My code needed some improvement too, here's what it looks like now:
private void aimShot() { float distanceX = this.fX - this.paX; float distanceY = this.fY - this.paY; boolean xIsNegative = false; boolean yIsNegative = false; if (distanceX < 0) { xIsNegative = true; distanceX = -distanceX; } if (distanceY < 0) { yIsNegative = true; distanceY = -distanceY; } if (distanceX == 0) { distanceX = 1; } if (distanceY == 0) { distanceY = 1; } float ratio = distanceX / distanceY; this.speedY = 10 / (ratio + 1); this.speedX = ratio * this.speedY; if (xIsNegative) { this.speedX = -this.speedX; } if (yIsNegative) { this.speedY = -this.speedY; } }

1. 1
2. 2
3. 3
Rutin
12
4. 4
5. 5

• 26
• 10
• 9
• 9
• 11
• ### Forum Statistics

• Total Topics
633695
• Total Posts
3013382
×