2017-02-24 1 views
0

Vorwarnung: semi-NeulingPhaser: Key Down + Kollision Tötet

Grundsätzlich, wenn der Benutzer die linke Cursor hat nach unten und ein "Token" kollidiert mit dem lftRect, ich will das Token töten. Aus irgendeinem Grund (relevant Code unten) meine Kill Callback-Funktion für die Kollision nicht funktioniert:

gumballGoGo.Preloader = function(game){ 
    this.player = null; 
    this.ground = null; 
    //this.tokens = null; 
    this.ready = false; 
}; 

var cursors, lftInit, rghtInit, ground, testDrp, sprite, tokens, rect, lftRect, ctrRect, rghtRect, lftToken; 
var total = 0; 

function lftHit(lftRect, lftToken) { 
    if (lftInit == true){ 
     lftToken.kill() 
    } 
}; 

gumballGoGo.Preloader.prototype = { 
    preload: function(){ 
    }, 

    create: function() { 

     // LFT BOX 
     lftRect = this.add.sprite(0, this.world.height - 150, null); 
     this.physics.enable(lftRect, Phaser.Physics.ARCADE); 
     lftRect.body.setSize(100, 100, 0, 0); 


     // CNTR BOX 
     ctrRect = this.add.sprite(100, this.world.height - 150, null); 
     this.physics.enable(ctrRect, Phaser.Physics.ARCADE); 
     ctrRect.body.setSize(100, 100, 0, 0); 


     // RGHT BOX 
     rghtRect = this.add.sprite(200, this.world.height - 150, null); 
     this.physics.enable(rghtRect, Phaser.Physics.ARCADE); 
     rghtRect.body.setSize(100, 100, 0, 0); 


     // INIT TOKEN GROUP 
     tokens = this.add.group(); 
     tokens.enableBody = true; 
     this.physics.arcade.enable(tokens); 

     testDrp = tokens.create(125, -50, 'token'); 
     testDrp.body.gravity.y = 300; 



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

    }, 

    update: function() { 
     this.ready = true; 

     if (this.cursors.left.isDown) 
      { 
       lftInit = true; 
      } 
     else if (this.cursors.right.isDown) 
      { 
       rghtInit = true; 
      } 
     else 
      { 
       lftInit, rghtInit = false; 

      } 

     if (total < 20) 
      { 
       tokenSpawn(); 
      } 

     this.physics.arcade.collide(lftRect, lftToken, lftHit, null, this);  

    } 
}; 


function tokenSpawn() { 

    lftToken = tokens.create(25, -(Math.random() * 800), 'token'); 

    lftToken.body.gravity.y = 300; 

    total++; 

} 

Das ultimative Ziel zu recreate this type of gameplay ist.

Eine zusätzliche Anmerkung: ab jetzt fallen "Tokens" mit einer zufälligen Spawn-Schleife. Ich würde lieber ein zeitgesteuertes Muster für den Token Drop verwenden. Wenn Sie dazu einen Rat benötigen, teilen Sie es bitte mit. Danke:]

Antwort

0

Nicht sicher, das ist also eine Vermutung, aber Sie wenden den letzten Parameter von 'this' auf die Funktion 'lfthit' an, die sich außerhalb des gumballGoGo.Preloader.prototype-Objekts befindet. Welchen Fehler bekommst du in der Konsole?