【问题标题】:Physics bug in Phaser.JSPhaser.JS 中的物理错误
【发布时间】:2020-07-29 00:15:46
【问题描述】:

在我的 Phaser.JS 文件中,物理碰撞器对于地面来说太早了(碰撞距离加载的精灵大约 100 像素)。这是我的代码:

var gameState = {};
var gx = 0;
function preload() {
    this.load.image('grass', 'grass.png');
    this.load.image('sky', 'sky.jpg');
    this.load.image('mario', 'mario.jpg');
}
function create() {
    var sky = this.add.image(window.innerWidth / 2, window.innerHeight / 2, 'sky');
     gameState.mario = this.physics.add.sprite(100,100, 'mario');
    sky.setScale(3.3);
    gameState.mario.setScale(.3);
    const platforms = this.physics.add.staticGroup();
    platforms.create(0,600, 'grass');
    gameState.mario.setCollideWorldBounds(true);
    this.physics.add.collider(gameState.mario, platforms);
}
function update() {
    
}
var config = {
    width: 400,
    height: 600,
    backgroundColor: 0x00FF00,
    scene: {
        preload, 
        create,
        update
    },
    physics: {
        default: 'arcade',
        arcade: {
            gravity: {y: 100},
            debug: false
        }
    }
};
var game = new Phaser.Game(config);

我不知道如何解决碰撞问题。我是初学者,所以我对 Phaser 了解不多。提前感谢任何答案或 cmets。

【问题讨论】:

    标签: javascript phaser-framework


    【解决方案1】:

    默认情况下,移相器将碰撞的碰撞箱大小调整为纹理大小。如果将该行从 debug: false 更改为 debug: true,它将在这些命中框周围画线。它可能是地面或角色的碰撞箱比图像“看起来”大。对于初学者来说,无需手动更改碰撞框的大小,将图像裁剪得更接近您期望的碰撞边缘会容易得多。对于调试线比预期大的纹理,您需要裁剪这些纹理。

    【讨论】:

      猜你喜欢
      • 2018-05-13
      • 2022-08-03
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多