如何使播放器不与平台碰撞以及在移相2(CE)中的某些条件



我正在编码平台游戏,我在平台和播放器之间发生碰撞,以便他可以通过平台,但是玩家不会通过平台

构建平台:

for (var i = 0; i < 35; i++) {
            var type = i % 2 === 1 ? 'platform' : 'ice-platform';
            var platform = this.platforms.create(x, y, type);
            if (platform.key === 'ice-platform') {
                platform.body.velocity.x = this.rnd.between(50, 100);
                if (Math.random() > 0.5) {
                    platform.body.velocity.x *= -1;
                }
            }
wrapPlatform: function (platform) {
        if (platform.key === 'ice-platform') {
            if (platform.body.velocity.x < 0 && platform.x <= -160) {
                platform.x = 640;
            } else if (platform.body.velocity.x > 0 && platform.x >= 600) {
                platform.x = -160;
            }
        }
    },

与球员碰撞:

setFriction: function (player, platform) {
       if (platform.key === 'ice-platform') {
           player.body.x -= platform.body.x - platform.body.prev.x;
       }
   },

提示:使用game.add.sprite(...),因为如果使用...add.image...,它将无法正常工作

var game = new Phaser.Game(800, 600, Phaser.AUTO, 'game', { preload: preload, create: create, update: update });
var ground, player;
var cursors;
function preload() {
  this.load.baseURL = 'https://raw.githubusercontent.com/nazimboudeffa/assets/master/';
  this.load.crossOrigin = 'anonymous';
  this.load.image('ground', 'pics/platform.png');
  this.load.image('dude', 'sprites/phaser-dude.png');
}
function create() {
  game.physics.startSystem(Phaser.Physics.ARCADE);
  ground = game.add.sprite(0, 200, 'ground');
  game.physics.arcade.enable(ground);
  ground.body.enable = true;
  ground.body.immovable = true;
  
  
  player = game.add.sprite(0, 300, 'dude');
  game.physics.arcade.enable(player);
  player.body.gravity.y = 300;
  player.body.collideWorldBounds = true;
  
  cursors = game.input.keyboard.createCursorKeys();
}
function update(){
  if (player.y < ground.y){
    game.physics.arcade.collide(player, ground)
  }
    
  if(cursors.up.isDown){
    player.body.velocity.y = -240;
  }
}
<script src="https://cdn.jsdelivr.net/npm/phaser-ce@2.13.1/build/phaser.js"></script>

最新更新