我创建了两个对象(一个实心圆和一个笔画圆),但是它们并没有像预期的那样碰撞。
下面是我的代码:
const config = {
type: Phaser.AUTO,
width: 400,
height: 400,
backgroundColor: "#f5bd22",
scene: {
preload: preload,
create: create,
update: update
},
physics: {
default: 'arcade',
arcade: {
gravity: { y: 90 },
debug: false
}
}
}
const game = new Phaser.Game(config);
let circle;
let hollowCircle;
function preload() {
}
function create() {
circle = this.add.circle(200, 200, 50, '#f5bd22');
hollowCircle = this.add.graphics();
hollowCircle.lineStyle(2, 0x000000);
hollowCircle.strokeCircle(200, 200, 100);
this.physics.world.enable([circle, hollowCircle]);
hollowCircle.body.gravity.y = -90;
this.physics.add.collider(circle, hollowCircle);
}
function update() {
}
字符串
它创建了一个内部有实心圆的笔划圆。重力设置为90到实心圆,0到笔划。当代码运行时,实心圆福尔斯落下,笔划保持静止。但是两个圆接触,什么也没有发生。
1条答案
按热度按时间czfnxgou1#
好吧,这是你想做的,不能这样做。街机物理只是在物理体的外部碰撞。另外,如果你看看调试边界框,你可以看到“hollowCircle”的物理框在左上角 (注意:
physics
和graphics
游戏对象,不要像相位器中的其他游戏对象那样React)。x1c 0d1x的数据
也就是说,如果你想要这种效果,一个简单的解决方法就是创建几个小的物理对象,覆盖轮廓的“空心”- Shape,然后再设置与这些对象的碰撞。
这里有一个小演示:
个字符
要查看发生了什么,请再次打开
config
中的调试标志。