2016-11-12 2 views
0

Ich benutze den folgenden Code: Es erstellt ein Paddel, und es soll sich bewegen, wenn ich die Maus bewege. Aber stattdessen vibriert es überall.Was bewegt mein Paddel?

Ich habe ein bisschen der console.log am Ende enthalten, so dass Sie das Ergebnis sehen können. Weiß jemand was ich falsch mache?

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'); 

Console Ausgang: erste Zahl ist die Position des Paddels, bevor ich verwende this.paddle.x = game.input.x;

  • 360/371
  • 415/371
  • 426/371
  • 382/371
  • ...

ich nichts geschrieben habe paddle.x der Ausnahme, dass eine Anweisung zu manipulieren . Und das Logbuch beweist, dass die Aussage korrekt ist, aber etwas anderes verwirrt den Code. Wenn ich this.paddle.x = game.input.x; entferne, steht das Paddel still. und bewegt sich nicht.

Wenn ich entfernen: Ich bekomme keine Physik

ich es in allen drei gängigen Browsern game.world.enableBody = true; funktioniert es, aber dann getestet. und ich führe es lokal mit Xampp

Es gibt ein anderes Beispiel davon here, aber ich bekomme das gleiche "vibrierende" Paddel, wenn ich es auf meinem System versuche. Es funktioniert jedoch gut auf der Website von Phaser.

Antwort

0

Es gefunden!

Kollisionen sind darauf angewiesen, dass das Objekt mit einer Geschwindigkeit kollidiert. Wenn Sie jedem Objekt sagen, was seine x- und y-Position sein soll, dann muss das Objekt keine Geschwindigkeit berechnen, und Kollisionen werden nicht auftreten ... oder werden auftreten, aber verrückt werden, abhängig davon, wie und wann Sie sich im Rahmen befinden TU es. Du brauchst etwas mehr wie den "moveToPointer" -Code (der die Geschwindigkeit so einstellt, dass er sich zur Zeigerposition bewegt), aber nur, wenn der Zeiger auf dem Objekt gehalten wird, und irgendwie das seltsame vibrierende/kreisende Problem ausgleicht, wenn es passiert erreicht den Zeiger.

Found the answer on html5gamedevs forum

So, jetzt umgesetzt ich folgende

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

Welche funktioniert wie ein Charme.

Verwandte Themen