C++: Checking if an object faces a point (within a certain range)
        Posted  
        
            by 
                bojoradarial
            
        on Game Development
        
        See other posts from Game Development
        
            or by bojoradarial
        
        
        
        Published on 2014-08-24T22:03:45Z
        Indexed on 
            2014/08/24
            22:35 UTC
        
        
        Read the original article
        Hit count: 329
        
c++
I have been working on a shooter game in C++, and am trying to add a feature whereby missiles shot must be within 90 degrees (PI/2 radians) of the direction the ship is facing. The missiles will be shot towards the mouse. My idea is that the ship's angle of rotation is compared with the angle between the ship and the mouse (std::atan2(mouseY - shipY, mouseX - shipX)), and if the difference is less than PI/4 (45 degrees) then the missile can be fired. However, I can't seem to get this to work. The ship's angle of rotation is increased and decreased with the A and D keys, so it is possible that it isn't between 0 and 2*PI, hence the use of fmod() below.
Code:
float userRotation = std::fmod(user->Angle(), 6.28318f);
if (std::abs(userRotation - missileAngle) > 0.78f) return;
Any help would be appreciated. Thanks!
© Game Development or respective owner