Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Thorion

Member Since 31 Jan 2012
Offline Last Active Feb 14 2012 08:44 PM

Topics I've Started

2D Aiming accuracy

31 January 2012 - 12:22 AM

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);
	  
	}

PARTNERS