2017-08-10 11 views
0

武器から特定の方向に銃弾を作ろうとしていますが、この弾丸は実際にはポケモンボールです。 。武器の弾丸を特定の方向に移動する方法

「弾丸」を私が望む方向に動かすことができないようです。weapon.body.velocity.x = -100; if(cursors.left.isDown) しかし、これはうまくいきませんでした。キーを押したときに画面が凍ってしまいます。

「弾丸」を私が望む方向に移動させるのを助けてください。

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

これを試してください。 weapon.body.velocity.x - = 100; –

+0

@KrisJ。いずれかのキーをクリックすると、まだフリーズします。 – hannacreed

+0

エラーが発生しますか? –

答えて

0

weapon.trackSprite(player, 30, 0); 

を変更してみてください

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

フェイザーのドキュメントでは、四番目のパラメータとしてtrueを渡した場合、それは、スプライトの回転に追従することを言います。

編集:あなたは現在、あなたのスプライトに任意の回転をやっていないので、あなたは、スプライトの方向を変えるプレイヤーのためにチェックしている角度変更:

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; 
    } 

をこれもそうかもしれない、あなたのプレーヤースプライトを回転させますこれはあなたが望むものではありません。

+0

今それは残っている唯一の撮影です@VasilyKushakov – hannacreed

+0

私はそれに対処するために私の答えを編集しました。私は弾丸があなたのスプライトの回転を追跡していると思うので、もしあなたが矢印キーを押したときにスプライトを回転させれば、それはうまくいくはずです。 –

+0

私のプレーヤを上下に反転させたくないことを除いて、これは機能しますが、イメージ自体ではなくスプライトの境界を回転させる方法はありますか?この方法では、弾丸が回転しているスプライトの境界の回転を聞くかもしれませんが、イメージは同じままですか? @VasilyKushakov – hannacreed

関連する問題