繁体   English   中英

Phaser 3 带圆圈的物理组

[英]Phaser 3 physics group with circle

我是 Phaser 的新手,正在学习本教程: https://www.codecaptain.io/blog/game-development/shooting-bullets-phaser-3-using-arcade-physics-groups/696

除了,而不是LaserSprite ,我只是希望它是一个简单的圆圈,所以我尝试了以下;

export class Laser extends Phaser.Physics.Arcade.Body {
    constructor(scene: Phaser.Scene, x: number, y: number) {
        const c = new Phaser.GameObjects.Ellipse(scene, x, y, 25, 25, 0x00ff00);

        super(scene.physics.world, c);
    }
}

这只会引发以下错误Uncaught TypeError: child.addToDisplayList is not a function

我在这里错过了一些相当基本的东西吗? 我似乎只能使用Phaser.Physics.Arcade.SpritePhaser.Physics.Arcade.Image 难道不可能只有一个由多个矩形或圆形组成的物理 object 吗?

您的代码看起来不错,但您仍然需要将GameObject添加到scene物理世界,才能使其正常工作。

你只需要做一些小的调整就可以工作。

(更新代码)这里有一个简短的可执行演示来展示这个案例:

 document.body.style = 'margin:0;'; class Laser extends Phaser.Physics.Arcade.Body { constructor(scene, x, y) { // add object to the scene, so that it can be displayed const c = scene.add.ellipse( x, y, 25, 25, 0x00ff00); // create the actual body super(scene.physics.world, c); // add Body to world scene.physics.add.existing(c) } } class Laser2 extends Phaser.GameObjects.Ellipse { constructor(scene, x, y) { super(scene, x, y, 25, 25, 0xff0000); //give the GameObject a Physics body scene.physics.add.existing(this) } } var config = { type: Phaser.AUTO, width: 536, height: 183, physics: { default: 'arcade', arcade: { gravity:{ y: 100 }, debug: true } }, scene: { create }, banner: false }; function create () { this.add.text(10,10, 'Falling balls- red are from a Group').setScale(1.5).setOrigin(0).setStyle({fontStyle: 'bold', fontFamily: 'Arial'}); // create a laser let laser = new Laser(this, 50, 50) // create second laser let group = this.physics.add.group({ classType: Laser2}); group.create(150, 0) group.create(170, -100) group.create(180, -50) } new Phaser.Game(config);
 <script src="//cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM