![](/img/trans.png)
[英]Phaser - How to properly implement Arcade Physics Collisions with Phaser.js
[英]Physics bug in Phaser.JS
在我的 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 了解不多。 提前感谢您的任何答案或评论。
默认情况下,移相器将碰撞的碰撞箱大小调整为纹理大小。 如果将该行从 debug: false 更改为 debug: true,它将在这些命中框周围画线。 它可能是地面或角色的碰撞箱比图像“看起来”大。 对于初学者来说,无需手动更改碰撞框的大小,将图像裁剪得更接近您期望的碰撞边缘会容易得多。 对于调试线大于预期的纹理,您需要裁剪这些纹理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.