Objective
- To convert
body.getAngle()
to 4 direction (NSEW), when torque or angularvelocity is used
Because box2d body default angle is zero, I used it as reference to create my character direction. 0 degree means West, 90 degree North, 180 degree East and 270 is south, with a range of 45 degree. When I manually transform the body I get the right direction, but when I use the body.setAngularVelocity()
or body.applyTorque()
I get a different angle, which is more than 360 degree, assume body.angle() * RADIAN_TO_DEGREE
. I am only expecting 0 to 360 degree without negative.
public static SteerDirection getDirection(float degreeAngle) {
SteerDirection direction = SteerDirection.NONE;
if(degreeAngle > 0 && degreeAngle < 22.5 || degreeAngle > 337.5 && degreeAngle < 360){
direction = SteerDirection.WEST;
}
if(degreeAngle > 22.5 && degreeAngle <67.5) {
direction = SteerDirection.NORTH_WEST;
}
if(degreeAngle > 67.5 && degreeAngle < 112.5){
direction = SteerDirection.NORTH;
}
if(degreeAngle > 112.5 && degreeAngle < 157.5){
direction = SteerDirection.NORTH_EAST;
}
if(degreeAngle > 157.5 && degreeAngle < 202.5){
direction = SteerDirection.EAST;
}
if(degreeAngle > 202.5 && degreeAngle < 247.5){
direction = SteerDirection.SOUTH_EAST;
}
if(degreeAngle > 247.5 && degreeAngle < 292.5) {
direction = SteerDirection.SOUTH;
}
if(degreeAngle > 292.5 && degreeAngle < 336.5) {
direction = SteerDirection.SOUTH_WEST;
}
return direction;
}