Como criar tanques em seu jogo html5
Este tipo de jogo dá-lhe algum tipo de mecanismo de lançamento para o seu jogo HTML5 com a física semi-realista, e tem de lançar projéteis (aves com problemas de raiva ou de outra forma) em algum tipo de alvo.
Conteúdo
Tanques, torres, e conchas
A coisa mais interessante sobre um jogo de estilo do tanque é a relação entre o tanque, sua torre, e as balas que dispara.
O tanque é um sprite, mas a imagem do tanque não inclui uma torre. A torre é um sprite, destinados a ser ligado ao tanque e rodado por conta própria. Quando o jogador move o tanque, a torre se move com ele. Quando o usuário gira a torre, a torre gira, mas o tanque não.
A bala é uma terceira sprite, que aparece quando o utilizador é accionado o tanque. posição inicial da bala é determinada pela posição do tanque, e o ângulo de movimento inicial da bala é determinada pelo ângulo da torre.
Video: Supertank!!! Jogo novo! Tank ultapower o/
Aqui está o código para o tanque:
UserTank function () {tTank = new Sprite (jogo, "greenTank.jpg", 50, 25) -tTank.setSpeed (0) -tTank.setPosition (100, 550) = -tTank.turret novo sprite (jogo, "turret.jpg", 50, 25) -tTank.bullet = nova bala (tTank) -tTank.checkKeys = função () {if (keysDown [K_A]) {this.changeXby (-2) -} se (keysDown [K_D]) {este .changeXby (2) -} // sempre mover torreta com me.this.turret.setPosition (this.x, this.y) - // rodar turretif (keysDown [K_W]) {this.turret.changeImgAngleBy (-5) -se (this.turret.getImgAngle () lt; 0) {this.turret.setImgAngle (0) -} // end if} se (keysDown [K_S]) {this.turret.changeImgAngleBy (5) -se (this.turret.getImgAngle () gt; 90) {this.turret.setImgAngle (90) -}} if (keysDown [K_SPACE]) {this.bullet.fire () -} this.turret.update () - this.bullet.checkGravity () - this.bullet .Update () -} // final checkKeysreturn tTank-} // tanque extremidade
A concepção do tanque é ligeiramente complicado por ter um sprite torreta dependente, e um sprite bala. Aqui é como construir esta miscelânea de bondade Sprite blindado:
Construir o sprite primeiro tanque.
Tal como acontece com a maioria dos exemplos simpleGame, começar por construir um sprite temporária para o tanque (chamado tTank).
Construir um sprite torre.
A torre é um segundo do sprite. É uma propriedade do tanque, bem como um sprite em seu próprio direito. A torre é bastante simples, por isso pode ser um sprite estoque. Ele não precisa ser uma subclasse completa.
Construir um sprite bala.
Cada tanque tem um sprite e uma bala. A bala vai precisar de alguns comportamentos específicos, por isso vai ser uma subclasse da duende objeto. Por enquanto, só sei que o tanque vai precisar de uma bala. Note-se que a bala vai precisar saber qual o depósito a que pertence.
Leia o teclado.
O tanque está definido para usar as teclas WASD para entrada.
Mova o tanque de esquerda e direita.
Os controles de esquerda e direita mover o próprio Sprite tanque. Mover a torre para que seu centro é sempre a mesma como o centro do tanque. Isso faz com que a torre para sempre mover-se com o tanque.
Girar a torre.
Os controles cima e para baixo causar a torre de rodar. Definir valores mínimo e máximo para manter a torre dentro de um intervalo razoável de ângulos.
Disparar a bala.
No comando de fogo (barra de espaço por padrão), invocar a bala de fogo() método. (Claro, você vai precisar para escrever que no Bala classe.)
Atualizar a torre.
Até agora, todos os atualizar() chamadas ter acontecido na principal atualizar() função. No entanto, o jogo principal não é realmente necessário atualizar o revólver. Porque a torre é parte do tanque, atualizando o tanque deve atualizar a torre. Porque o checkKeys () método vai acontecer a cada quadro, atualizar a torre para garantir que ele chama corretamente.
Mova a bala.
Se uma bala está ativa, utilize o checkGravity () método para controlar seu curso atual, tendo força gravitacional em conta. Se não há nenhuma bala ativa no momento, esta linha será ignorado.
Atualize a bala.
Mais uma vez, a bala se sente como parte do tanque, por isso deve ser atualizado automaticamente.
Como construir uma bala
A classe bala vai ser disparado por um tanque. A bala é uma classe surpreendentemente sofisticado, como ele precisa de um fogo() método (que irá disparar a bala baseado no tanque e situação atual da torre) e uma checkGravity () método (que traça a trajetória da bala no espaço).
Aqui está o Bala código da classe:
função Bullet (proprietário) {// proprietário é o tanque de possuir este bullettBullet = new Sprite (jogo, "bullet.jpg", 5, 5) -tBullet.owner = owner-tBullet.hide () - tBullet.setBoundAction (DIE) -tBullet.fire = function () {// começa no centro do meu tanque // apontando na directionthis.setPosition tanque de torre (this.owner.x, this.owner.y) -this.setMoveAngle (this.owner.turret.getImgAngle ()) - this.setSpeed (20) -this.show () -} // firetBullet.checkGravity final = função () {this.addVector (180, 1) -} // final checkGravityreturn tBullet-} // bala extremidade
Aqui está a história de vida de uma bala em um jogo:
Especifique o tanque proprietário.
Quando este jogo tem vários tanques disparando um para o outro (o que ele precisa claramente), deve haver um monte de balas voando ao redor. Cada bala vai precisar saber qual o depósito a que pertence para que ele possa disparar a partir da posição direita na direção certa.
Ocultar.
o Bala objeto é criado no início do jogo, mas passa a maior parte de sua vida escondido invisível. Uma das primeiras coisas que você faz é esconder a bala por isso vai ser visível apenas depois que ele é demitido.
Definir ação limite para MORRER.
Balas tipicamente morrem quando atingem a extremidade da tela. O sprite não é removido da memória. Ele simplesmente não é exibido na tela e não responde a colisões. Configurando a ação de fronteira para MORRER irá fazer com que o comportamento desejado.
Fogo da posição do tanque de proprietário.
Quando a bala é disparada, colocá-lo na posição do tanque de proprietário.
Defina o ângulo movimento para ângulo torre do tanque proprietário.
o trabalho principal do torreão é indicar que ângulo é usado como trajetória de partida da bala.
Fornecer uma grande velocidade de movimento.
Video: Como criar jogos - Construct2 - Aula 1
Balas deve mover-se rapidamente, para definir uma velocidade inicial de 20 pixels por quadro. (Você pode adicionar outro controle para permitir que o usuário para modificar a velocidade inicial, se desejar.)
Revelar a bala.
Invocar a bala de exposição() método para fazer a bala aparecer na tela.
Verifique se há gravidade.
Tudo esta função faz é compensar a força gravitacional com a addVector () método.