Enemy.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'atomic component';
  2. exports.component = function(self) {
  3. var game = Atomic.game;
  4. var node = self.node;
  5. self.allowShoot = true;
  6. self.shootDelta = 0;
  7. var moveDelta = 0;
  8. var dead = false;
  9. self.onHit = function() {
  10. var expNode = SpaceGame.myscene.createChild("Explosion");
  11. var exp = expNode.createJSComponent("Components/Explosion.js", {
  12. spawnPosition: node.worldPosition2D
  13. });
  14. SpaceGame.removeEnemy(self);
  15. }
  16. self.start = function() {
  17. // install AI
  18. node.createJSComponent("Components/AI.js");
  19. var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
  20. // add a sprite component to our node
  21. var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
  22. sprite2D.blendMode = Atomic.BLEND_ALPHA;
  23. sprite2D.sprite = spaceSheet.getSprite(self.spriteName);
  24. node.position2D = self.spawnPosition;
  25. node.roll(180);
  26. node.scale2D = [0.65, 0.65];
  27. sprite2D.alpha = 0.0;
  28. self.dir = (Math.random() > .5);
  29. }
  30. // update function called per frame with delta time
  31. self.update = function(timeStep) {
  32. // fade in
  33. var alpha = self.sprite2D.alpha;
  34. if (alpha < 1) {
  35. alpha += timeStep * 1.5;
  36. if (alpha > 1)
  37. alpha = 1;
  38. self.sprite2D.alpha = alpha;
  39. }
  40. var pos = node.position2D;
  41. var ppos = SpaceGame.playerNode.position2D;
  42. if (Math.random() > .98) {
  43. self.dir = !self.dir;
  44. }
  45. moveDelta += (self.dir ? timeStep * 4 : -timeStep * 4);
  46. pos = [self.spawnPosition[0], self.spawnPosition[1]];
  47. pos[1] += Math.sin(moveDelta) * .1;
  48. node.position2D = pos;
  49. }
  50. }