Bullet.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. var game = Atomic.game;
  2. var node = self.node;
  3. self.isPlayer = false;
  4. self.init = function(isPlayer, spawnPosition) {
  5. self.isPlayer = isPlayer;
  6. var laserSound = game.getSound(self.isPlayer ? "Sounds/laser01.wav" : "Sounds/laser02.wav");
  7. var sprite2D = node.createComponent("StaticSprite2D");
  8. if (self.isPlayer)
  9. sprite2D.sprite = game.getSprite2D("Sprites/blue_beam.png");
  10. else
  11. sprite2D.sprite = game.getSprite2D("Sprites/green_beam.png");
  12. sprite2D.blendMode = Atomic.BLEND_ADDALPHA;
  13. self.soundSource = node.createComponent("SoundSource");
  14. self.soundSource.soundType = Atomic.SOUND_EFFECT;
  15. self.soundSource.gain = 0.75;
  16. self.soundSource.play(laserSound);
  17. node.position2D = spawnPosition;
  18. if (!self.isPlayer) {
  19. node.roll(180);
  20. }
  21. }
  22. function start() {
  23. }
  24. function updateEnemyBullet() {
  25. var bpos = node.position2D;
  26. // off the bottom of the screen
  27. if (bpos[1] < -SpaceGame.halfHeight) {
  28. return true;
  29. }
  30. if (SpaceGame.player) {
  31. var epos = SpaceGame.player.node.worldPosition2D;
  32. if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
  33. Math.abs(epos[1] - bpos[1]) < 0.25) {
  34. SpaceGame.player.onHit();
  35. return true;
  36. }
  37. }
  38. }
  39. function updatePlayerBullet() {
  40. var bpos = node.position2D;
  41. // off the top of the screen
  42. if (bpos[1] > SpaceGame.halfHeight) {
  43. return true;
  44. }
  45. for (var i = 0; i < SpaceGame.enemies.length; i++) {
  46. var enemy = SpaceGame.enemies[i];
  47. var epos = enemy.node.worldPosition2D;
  48. if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
  49. Math.abs(epos[1] - bpos[1]) < 0.25) {
  50. enemy.onHit();
  51. return true;
  52. }
  53. }
  54. if (SpaceGame.capitalShip) {
  55. var epos = SpaceGame.capitalShip.node.worldPosition2D;
  56. if (Math.abs(epos[0] - bpos[0]) < 0.75 &&
  57. Math.abs(epos[1] - bpos[1]) < 0.75) {
  58. SpaceGame.capitalShip.onHit(bpos);
  59. return true;
  60. }
  61. }
  62. }
  63. function update(timeStep) {
  64. var speed = self.isPlayer ? 8 : 5;
  65. speed *= timeStep;
  66. node.translate2D([0, speed]);
  67. if (self.isPlayer) {
  68. if (updatePlayerBullet()) {
  69. Atomic.destroy(node);
  70. }
  71. } else {
  72. if (updateEnemyBullet()) {
  73. Atomic.destroy(node);
  74. }
  75. }
  76. }