2016-11-12 6 views
0

次のコードを使用します:パドルを作成し、マウスを動かすと動くはずです。しかし、代わりにそれは全面的に振動する。私のパドルを動かすのは何ですか?

最後にconsole.logのビットが含まれていますので、結果を確認できます。誰かが私が間違っていることを知っていますか?

var screenWidth = 800; 
var screenHeight = 400; 
// Create the state that will contain the whole game 
var mainState = { 
    preload: function() { 
     game.load.image('paddle', 'assets/graphics/Paddle.png'); 
    }, 
    create: function() { 
     game.physics.startSystem(Phaser.Physics.ARCADE); 
     game.world.enableBody = true; 

     this.paddle = game.add.sprite(screenWidth/2 - 50, screenHeight - 50, 'paddle'); 
     this.paddle.body.immovable = true; 
    }, 
    update: function() { 
     var testvalue = this.paddle.x; 
     this.paddle.x = game.input.x; 
     console.log(testvalue + "/" + this.paddle.x); 
    }, 
}; 

var game = new Phaser.Game(screenWidth, screenHeight); 
game.state.add('main', mainState); 
game.state.start('main'); 

コンソール出力:最初の数字はthis.paddle.x = game.input.xを使用する前のパドルの位置です。私は1つの文を除いpaddle.xを操作することは何も書かれていない

/371

  • 371分の415
  • 371分の426
  • 371分の382
    • 360 ... 。そしてログは、そのステートメントが正しいことを証明しますが、何か他のものがコードを駄目です。 this.paddle.x = game.input.x;を削除すると、パドルはそのままです。移動しません。

      私が削除した場合:それが動作game.world.enableBody = true;、その後私は、私はすべての3つの主要なブラウザでそれをテストして何の物理

      を取得していません。私はXamppでローカルに実行します

      hereの別の例がありますが、システム上で試してみると同じ「振動する」パドルがあります。しかし、それはphaserのウェブサイト上で正常に動作します。

  • 答えて

    0

    見つけました!

    衝突は速度を持つオブジェクトに依存します。オブジェクトの各フレームにxとyの位置を指定すると、オブジェクトには速度が計算されず、衝突は発生しません。フレーム内の方法とタイミングに応じて発生しますが、狂ってしまいます。それをやる。ポインターがオブジェクト上に押されているときだけ、「moveToPointer」コード(ポインタの位置に移動するようなベロシティを設定する)のようなものが必要です。ポインタがオブジェクト上に押されていても、それが起こったときに起こる奇妙な振動/ポインタに達する。

    Found the answer on html5gamedevs forum

    だから今、私は魔法のように動作し、次の

    var diff = game.input.x - this.paddle.x 
    this.paddle.body.velocity.x = diff*10; 
    

    を実施しました。

    関連する問題