danielpuentes123 Posted May 23, 2018 Share Posted May 23, 2018 Hola, quiero hacer un juego tipo Space Invaders y todo lo que necesito es que mis enemigos disparen y no: / var fondojuego; var nave; var cursores; var balas; var tiempoBala = 0; var botonDisparo; var enemigos; var Juego = { preload: function(){ //FONDO juego.load.image('fondo', 'img/space.png'); //player juego.load.image('personaje', 'img/nave.png'); //laser(proyectil) juego.load.image('laser','img/laser.png'); //enemigo juego.load.image('enemigo','img/pajaro2.png'); //bala enemiga juego.load.image('enemyBullet', 'img/enemy-bullet.png'); }, create: function(){ //FONDO fondojuego = juego.add.tileSprite(0, 0, 370, 550, 'fondo'); //player nave (anchor es el punto de apoyo, lo centramos) nave = juego.add.sprite(juego.width/2, 500, 'personaje'); nave.anchor.setTo(0.5); //controles cursores = juego.input.keyboard.createCursorKeys(); //boton para disparar botonDisparo = juego.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR); //grupo de balas balas = juego.add.group(); balas.enableBody = true; balas.physicsBodyType = Phaser.Physics.ARCADE; balas.createMultiple(20, 'laser'); balas.setAll('anchor.x', 0.5); balas.setAll('anchor.y', 1); balas.setAll('outOfBoundsKill', true); balas.setAll('checkWorldBounds', true); //grupo de balas de los enemigos enemigos = juego.add.group(); enemigos.enableBody = true; enemigos.physicsBodyType = Phaser.Physics.ARCADE; setupBullets: function () { this.enemyBulletPool = this.add.group(); this.enemyBulletPool.enableBody = true; this.enemyBulletPool.physicsBodyType = Phaser.Physics.ARCADE; this.enemyBulletPool.createMultiple(100, 'enemyBullet'); this.enemyBulletPool.setAll('anchor.x', 0.5); this.enemyBulletPool.setAll('anchor.y', 0.5); this.enemyBulletPool.setAll('outOfBoundsKill', true); this.enemyBulletPool.setAll('checkWorldBounds', true); this.enemyBulletPool.setAll('reward', 0, false, false, 0, true); // Add an empty sprite group into our game this.bulletPool = this.add.group(); //crear enemigos y mostrarlos for(var y = 0; y < 6; y++) { for(var x = 0; x < 7; x++) { var enemigo = enemigos.create(x*40, y*20, 'enemigo'); enemigo.anchor.setTo(0.5); } } enemigos.x = 50; enemigos.y = 30; //movimiento de bordes y de descender var animacion = juego.add.tween(enemigos).to({x:100}, 1000, Phaser.Easing.Linear.None, true, 0, 1000, true); animacion.onLoop.add(descender, this); }, update: function(){ //movimiento personaje if(cursores.right.isDown) { nave.position.x += 3; } else if(cursores.left.isDown) { nave.position.x -= 3; } //disparo var bala; if (botonDisparo.isDown) { if(juego.time.now > tiempoBala) { bala = balas.getFirstExists(false); } if (bala) { bala.reset(nave.x, nave.y); bala.body.velocity.y = -300; tiempoBala = juego.time.now + 100; } } //balas enemigos :v enemyFire: function() { this.shooterPool.forEachAlive(function (enemy) { if (this.time.now > enemy.nextShotAt && this.enemyBulletPool.countDead() > 0) { var bullet = this.enemyBulletPool.getFirstExists(false); bullet.reset(enemy.x, enemy.y); this.physics.arcade.moveToObject( bullet, this.player, BasicGame.ENEMY_BULLET_VELOCITY ); enemy.nextShotAt = this.time.now + BasicGame.SHOOTER_SHOT_DELAY; } }, this); }, }, }; //la funcion descender hace que bajen poco a poco function descender(){ enemigos.y += 10; } juego.state.add('principal', estadoPrincipal); juego.state.start('principal'); Link to comment Share on other sites More sharing options...
Recommended Posts