2017-08-10 8 views
0

Ich versuche, eine 'Kugel' aus der var Waffe schießen in eine bestimmte Richtung, diese Kugel ist eigentlich ein Pokemon Ball, wie ich gerade ein Übungsspiel mache .Wie man Waffe 'Kugel' in eine bestimmte Richtung gehen

Ich kann nicht scheinen, dass die 'Kugel' in die Richtung gehen, die ich möchte, ich trat ein: weapon.body.velocity.x = -100; unter dem: if (cursors.left.isDown) aber das hat nicht funktioniert, wenn ich irgendeine Taste gedrückt hat, würde der Bildschirm einfach einfrieren.

Bitte helfen Sie mir, die 'Kugel' in die Richtung gehen zu lassen, die ich will.

var items; 
 
var game; 
 
var player; 
 
var weapon; 
 
var cursors; 
 
var fireButton; 
 

 

 
function addItems() { 
 
    items = game.add.physicsGroup(); 
 
    createItem(100, 400, 'coin'); 
 
} 
 

 
function createItem(left, top, image) { 
 
    var item = items.create(left, top, image); 
 
    item.animations.add('spin'); 
 
    item.animations.play('spin', 10, true); 
 
} 
 

 
function itemHandler(player, item) { 
 
    item.kill(); 
 

 
} 
 

 

 
window.onload = function() { 
 
    game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render }); 
 

 
    function preload() { 
 

 
    game.stage.backgroundColor = ('#424242'); 
 

 
    game.load.spritesheet('coin', 'coin.png', 36, 44); 
 
    game.load.spritesheet('player', 'hero.png', 64, 64); 
 
    game.load.spritesheet('bullet', 'Pokeball.png'); 
 

 

 
    } 
 

 

 
    function create() { 
 

 
     player = this.game.add.sprite(100, 200, 'player'); 
 
    // ANIMATION FOR PLAYER CONTROLS 
 
     down = player.animations.add('down', [0,1,2,3], 10, true); 
 
     left = player.animations.add('left', [4,5,6,7], 10, true); 
 
     right = player.animations.add('right', [8,9,10,11], 10, true); 
 
     up = player.animations.add('up', [12,13,14,15], 10, true); 
 

 
     // enable physics in the game (can't go through walls, gravity, etc.) 
 

 
     game.physics.enable(player, Phaser.Physics.ARCADE); 
 
     game.physics.startSystem(Phaser.Physics.P2JS); 
 
     game.physics.startSystem(Phaser.Physics.ARCADE); 
 
     game.physics.p2.enable(player); 
 

 

 
     player.body.setSize(30, 45, 16, 12); 
 
     player.body.immovable = false; 
 
     // enable keyboard arrows for controls 
 
     cursors = game.input.keyboard.createCursorKeys(); 
 
     // camera will follow the character 
 
     game.camera.follow(player); 
 

 
     addItems(); 
 

 

 
     // Creates 1 single bullet, using the 'bullet' graphic 
 
     weapon = game.add.weapon(1, 'bullet'); 
 

 
     // The bullet will be automatically killed when it leaves the world bounds 
 
     weapon.bulletKillType = Phaser.Weapon.KILL_WORLD_BOUNDS; 
 

 
     // Because our bullet is drawn facing up, we need to offset its rotation: 
 

 

 
     // The speed at which the bullet is fired 
 
     weapon.bulletSpeed = 400; 
 

 

 

 
     game.physics.arcade.enable(player); 
 

 
     // Tell the Weapon to track the 'player' Sprite, offset by 14px horizontally, 0 vertically 
 
     weapon.trackSprite(player, 30, 0); 
 

 
     cursors = this.input.keyboard.createCursorKeys(); 
 

 
     fireButton = this.input.keyboard.addKey(Phaser.KeyCode.SPACEBAR); 
 

 
    } 
 

 
    function update() { 
 

 
     game.physics.arcade.overlap(player, items, itemHandler); 
 

 
    // PLAYER CONTROLS 
 
     player.body.velocity.set(0); 
 
     // player presses left key 
 
     if (cursors.left.isDown) 
 
     { 
 
      player.body.velocity.x = -100; 
 
      player.play('left'); 
 
     } 
 
     // player presses right key 
 
     else if (cursors.right.isDown) 
 
     { 
 
      player.body.velocity.x = 100; 
 
      player.play('right'); 
 
     } 
 
     // player presses up key 
 
     else if (cursors.up.isDown) 
 
     { 
 
      player.body.velocity.y = -100; 
 
      player.play('up'); 
 
     } 
 
     // player presses down key 
 
     else if (cursors.down.isDown) 
 
     { 
 
      player.body.velocity.y = 100; 
 
      player.play('down'); 
 
     } 
 
     // player does not press anything 
 
     else 
 
     { 
 
      player.animations.stop(); 
 
     } 
 

 
     if (fireButton.isDown) 
 
     { 
 
      weapon.fire(); 
 
     } 
 

 
    } 
 

 
    function render() { 
 

 
    weapon.debug(); 
 

 
    } 
 

 
}
<!DOCTYPE html> 
 
<html lang="en"> 
 
\t <head> 
 
\t \t <meta charset="utf-8"> 
 
\t \t <title>Simple Canvas Game</title> 
 
    <style> 
 
     html { 
 
     background: black 
 
     } 
 
     canvas { 
 
     margin: auto; 
 
     } 
 
    </style> 
 
\t </head> 
 
\t <body> 
 
    <script src="phaser.js"></script> 
 
\t \t <script src="game.js"></script> 
 
\t </body> 
 
</html>

+0

versuchen Sie das; waffe.body.velocity.x - = 100; –

+0

@KrisJ. Es friert immer noch ein, wenn ich auf irgendeinen Schlüssel klicke. – hannacreed

+0

erhalten Sie keinen Fehler? –

Antwort

0

Versuchen

weapon.trackSprite(player, 30, 0); 

zu

Ändern
weapon.trackSprite(player, 30, 0, true); 

Phaser in der Dokumentation sagt, dass, wenn Sie wahr, wie die vierten Parameter übergeben, dann wird es der Rotation des Sprits folgen .

Edit: Sie sind nicht zur Zeit jede Drehung auf Ihren Sprit tun, so den Winkel ändern, in dem Sie für die Spieler sind die Überprüfung die Richtung des Sprites zu ändern:

if (cursors.left.isDown) 
    { 
     player.angle = 180; 
    } 
    else if (cursors.right.isDown) 
    { 
     player.angle = -90; 
    } 
    else if (cursors.up.isDown) 
    { 
     player.angle = 90; 
    } 
    // player presses down key 
    else if (cursors.down.isDown) 
    { 
     player.angle = 0; 
    } 

Dies wird Ihren Spieler Sprit auch drehen, vielleicht das ist nicht was du willst.

+0

Jetzt ist es nur Schießen links lol @VasilyKushakov – hannacreed

+0

Ich habe meine Antwort bearbeitet, um das zu adressieren. Ich denke, die Kugeln verfolgen die Rotation deines Sprites. Wenn du also das Sprite drehst, wenn der Spieler die Pfeiltasten drückt, sollte es funktionieren oder zumindest in die richtige Richtung gehen. –

+0

das funktioniert, außer ich möchte nicht, dass mein Player umgedreht wird und um haha, gibt es eine Möglichkeit, die Grenzen des Sprite und nicht das Bild selbst zu drehen? Auf diese Weise würde die Kugel vielleicht auf die Drehung des Sprites, das gedreht wird, hören, aber das Bild würde gleich bleiben? @VasilyKushakov – hannacreed

Verwandte Themen