Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Today I am trying to make it so if I hit the enemy then the enemy will be knocked backwards in the direction the sprite is facing. I am rotating the sprite around 360 degrees using a joystick on the screen and wanted to know the best practice or ways to accomplish this. I have come up with a few ideas but none of them make use of the sprites angle he is facing just a check to see if I hit the bottom then move him upward and so forth. I am just stumped on how to apply the sprites angle to the enemies x and y coordinate and move him accordingly. Has anyone tried this and have suggestions or things to look for?

share|improve this question
add comment

1 Answer 1

up vote 3 down vote accepted

You'll need to turn the angle of rotation into a 2d vector which represents the direction the sprite is facing. You can then add or subtract this 2d vector onto the sprites position to move it forward or backwards in the direction it's facing.

You can generate the vector with something as simple as using cos() and sin() for the X and Y components of this vector. (you'll need to ensure you don't mix degrees and radians when passing into these functions - plus ensure that when the angle is Zero that your sprite is facing directly right, although you could fix this by adding a constant onto the angle passed into cos/sin to adjust for any rotation that exists in the sprite).

share|improve this answer
    
Hey Roger, thanks for your answer, Ialmost go this to work fo rme by using this code <pre>setenemyPositionY(getenemyPositionY() + Math.sin(getRotation() * (Math.PI / 180))); setenemyPositionX(getenemyPositionX() + Math.cos(getRotation() * (Math.PI / 180))); </pre> Is this what you were talking about? This seems to work however alwasy launches the enemy to my right. Ill keep working on it though. Thanks for your help. –  pengume Mar 14 '11 at 8:10
    
Yeah, something like that. If it's always sending the sprite off in a direction that's say 90 degrees out then chances are the sprite doesn't face in the same direction that lines up with Zero degrees. You can work around this by adding a constant to the value returned by getRotation() to shift the rotation angle around to compensate for this discrepancy. –  Roger Perkins Mar 14 '11 at 10:13
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.