Mercurial > projects > openmelee
diff ai.d @ 13:e1004697cae1
tracking
author | zzzzrrr <mason.green@gmail.com> |
---|---|
date | Mon, 23 Mar 2009 08:02:23 -0400 |
parents | 2ecd16840900 |
children | af1e8620f027 |
line wrap: on
line diff
--- a/ai.d Sun Mar 22 12:10:16 2009 -0400 +++ b/ai.d Mon Mar 23 08:02:23 2009 -0400 @@ -31,7 +31,7 @@ module openmelee.ai; import tango.io.Stdout : Stdout; -import tango.math.Math : atan2; +import tango.math.Math : atan2, abs, PI; import blaze.common.bzMath: bzVec2; import openmelee.steer : Steer; @@ -54,15 +54,38 @@ steer.update(); bzVec2 st; st = steer.steerForPursuit(enemy.state, maxPredictionTime); - //ship.thrust(); + ship.state.target = st; float angle = atan2(st.x, st.y); + + Stdout("Target angle: ")(angle).newline; + + float x = ship.state.forward.x; + float y = ship.state.forward.y; + float angle2 = atan2(x,y); + - if(angle < 0) { - ship.turnLeft(); - } else { - ship.turnRight(); - } + float rel = angle2 - angle; + + if(abs(rel) > PI/8) { + if(angle < angle2) { + ship.turnLeft(); + ship.state.turn = true; + } else { + ship.state.turn = true; + ship.turnRight(); + } + } else { + ship.rBody.angularVelocity = 0.0f; + ship.state.turn = false; + } + + ship.state.enemyAngle = rel; + + float range = (ship.state.position - enemy.state.position).length; + if(range > 20 && !ship.state.turn) { + //ship.thrust(); + } } }