如何角色只站在瓷砖的中心而不是我们的瓷砖网站
How to charachter stand only center of tile not our site of tile
我的代码在这里,请看。我已经尝试了我的选择但坚持了这一点。
https://www.codepile.net/pile/7mPpA9m0
我做了什么,请分享我最好的解决方案。我被困在过去的两周里。在这个问题上请帮助我
如预览评论中所述(我无法回答,因为问题已关闭),问题是物理对象的 bounding-box。
可以是播放器也可以是平台,具体看图片。
要确定打开Phaser Game Object config
中的调试信息(debug: true
)。 (可以在这里找到一个不错的演示:https://phaser.io/examples/v3/view/physics/arcade/custom-debug-colors)
然后调整边界框的大小。 _(可以在这里找到一个不错的演示:https://phaser.io/examples/v3/view/physics/arcade/smaller-bounding-box)
我在这里你可以看到我的意思。
红色和白色玩家的边界框是一样的,但是我用函数setSize
把白色玩家的框变小了,用函数[=15=调整了边界框的位置].
这是一个工作演示:
var config = {
type: Phaser.AUTO,
width: 536,
height: 183,
scene: {
create: create
},
physics: {
default: 'arcade',
arcade: {
gravity:{y:100},
//show debug information
debug: true
}
},
banner: false
};
function create () {
// JUST FOR DEMO START
let graphics = this.make.graphics();
graphics.fillStyle(0xffffff);
graphics.fillRect(10,5,10,25);
graphics.generateTexture('player', 30, 30);
// JUST FOR DEMO END
let platform = this.add.rectangle(150, 120, 100, 20, 0x00ff00)
.setOrigin(0, 1);
this.physics.add.existing(platform)
.body
.setImmovable(true)
.setAllowGravity(false);
let player = this.add.image(136, 50, 'player')
.setOrigin(.5, 1)
.setTint(0xff0000);
this.physics.add.existing(player);
let player2 = this.add.image(136, 50, 'player')
.setOrigin(.5, 1);
this.physics.add.existing(player2)
.body
// CHANGE SIZE OFF PHYSICS BOX
.setSize(14, 25, false)
.setOffset(8, 5)
.setAllowGravity(false)
.setVelocityY(10)
this.physics.add.collider(player, platform);
this.physics.add.collider(player2, platform);
}
var game = new Phaser.Game(config);
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js">
</script>
取决于,如果您的玩家或您的平台 bounding-box 太大,您将不得不调整它,或制作图像,具有不太透明的边框。
我的代码在这里,请看。我已经尝试了我的选择但坚持了这一点。 https://www.codepile.net/pile/7mPpA9m0
我做了什么,请分享我最好的解决方案。我被困在过去的两周里。在这个问题上请帮助我
如预览评论中所述(我无法回答,因为问题已关闭),问题是物理对象的 bounding-box。
可以是播放器也可以是平台,具体看图片。
要确定打开Phaser Game Object config
中的调试信息(debug: true
)。 (可以在这里找到一个不错的演示:https://phaser.io/examples/v3/view/physics/arcade/custom-debug-colors)
然后调整边界框的大小。 _(可以在这里找到一个不错的演示:https://phaser.io/examples/v3/view/physics/arcade/smaller-bounding-box)
我在这里你可以看到我的意思。
红色和白色玩家的边界框是一样的,但是我用函数setSize
把白色玩家的框变小了,用函数[=15=调整了边界框的位置].
这是一个工作演示:
var config = {
type: Phaser.AUTO,
width: 536,
height: 183,
scene: {
create: create
},
physics: {
default: 'arcade',
arcade: {
gravity:{y:100},
//show debug information
debug: true
}
},
banner: false
};
function create () {
// JUST FOR DEMO START
let graphics = this.make.graphics();
graphics.fillStyle(0xffffff);
graphics.fillRect(10,5,10,25);
graphics.generateTexture('player', 30, 30);
// JUST FOR DEMO END
let platform = this.add.rectangle(150, 120, 100, 20, 0x00ff00)
.setOrigin(0, 1);
this.physics.add.existing(platform)
.body
.setImmovable(true)
.setAllowGravity(false);
let player = this.add.image(136, 50, 'player')
.setOrigin(.5, 1)
.setTint(0xff0000);
this.physics.add.existing(player);
let player2 = this.add.image(136, 50, 'player')
.setOrigin(.5, 1);
this.physics.add.existing(player2)
.body
// CHANGE SIZE OFF PHYSICS BOX
.setSize(14, 25, false)
.setOffset(8, 5)
.setAllowGravity(false)
.setVelocityY(10)
this.physics.add.collider(player, platform);
this.physics.add.collider(player2, platform);
}
var game = new Phaser.Game(config);
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js">
</script>
取决于,如果您的玩家或您的平台 bounding-box 太大,您将不得不调整它,或制作图像,具有不太透明的边框。