comparison ai.d @ 13:e1004697cae1

tracking
author zzzzrrr <mason.green@gmail.com>
date Mon, 23 Mar 2009 08:02:23 -0400
parents 2ecd16840900
children af1e8620f027
comparison
equal deleted inserted replaced
12:2ecd16840900 13:e1004697cae1
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 module openmelee.ai; 31 module openmelee.ai;
32 32
33 import tango.io.Stdout : Stdout; 33 import tango.io.Stdout : Stdout;
34 import tango.math.Math : atan2; 34 import tango.math.Math : atan2, abs, PI;
35 35
36 import blaze.common.bzMath: bzVec2; 36 import blaze.common.bzMath: bzVec2;
37 import openmelee.steer : Steer; 37 import openmelee.steer : Steer;
38 import openmelee.ship : Ship; 38 import openmelee.ship : Ship;
39 39
52 void move(Ship enemy) { 52 void move(Ship enemy) {
53 53
54 steer.update(); 54 steer.update();
55 bzVec2 st; 55 bzVec2 st;
56 st = steer.steerForPursuit(enemy.state, maxPredictionTime); 56 st = steer.steerForPursuit(enemy.state, maxPredictionTime);
57 //ship.thrust(); 57
58 ship.state.target = st; 58 ship.state.target = st;
59 float angle = atan2(st.x, st.y); 59 float angle = atan2(st.x, st.y);
60
61 Stdout("Target angle: ")(angle).newline;
62
63 float x = ship.state.forward.x;
64 float y = ship.state.forward.y;
65 float angle2 = atan2(x,y);
66
60 67
61 if(angle < 0) { 68 float rel = angle2 - angle;
62 ship.turnLeft(); 69
63 } else { 70 if(abs(rel) > PI/8) {
64 ship.turnRight(); 71 if(angle < angle2) {
65 } 72 ship.turnLeft();
73 ship.state.turn = true;
74 } else {
75 ship.state.turn = true;
76 ship.turnRight();
77 }
78 } else {
79 ship.rBody.angularVelocity = 0.0f;
80 ship.state.turn = false;
81 }
82
83 ship.state.enemyAngle = rel;
84
85 float range = (ship.state.position - enemy.state.position).length;
86 if(range > 20 && !ship.state.turn) {
87 //ship.thrust();
88 }
66 } 89 }
67 90
68 } 91 }