Bat.js 988 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. var glmatrix = require("gl-matrix");
  2. var vec2 = glmatrix.vec2;
  3. "atomic component";
  4. var component = function (self) {
  5. var node = self.node;
  6. var sprite = node.getComponent("AnimatedSprite2D")
  7. sprite.setAnimation("Fly");
  8. var cwaypoint = -1;
  9. var time = Math.random() * 10000;
  10. self.update = function(timestep) {
  11. time += timestep * 4;
  12. var waypoints = node.waypoints;
  13. var pos = node.position2D;
  14. if (cwaypoint == -1 || vec2.distance(pos, waypoints[cwaypoint]) < .5) {
  15. cwaypoint = Math.round(Math.random() * (waypoints.length - 1));
  16. return;
  17. }
  18. var dir = vec2.create();
  19. var goal = waypoints[cwaypoint];
  20. vec2.subtract(dir, goal, pos);
  21. vec2.normalize(dir, dir);
  22. vec2.scale(dir, dir, timestep * 2);
  23. if (dir[0] < 0)
  24. sprite.flipX = true;
  25. else
  26. sprite.flipX = false;
  27. vec2.add(pos, pos, dir);
  28. node.position2D = pos;
  29. }
  30. }
  31. exports.component = component;