有 3 种方法"this.add.rectangle()"、"new Phaser.GameObjects.Rectangle()"和"fillRectShape()",我应该什么时候使用哪个?



我是 Phaser 3 的新手,并试图找出(至少)3 种创建矩形的方法之间的区别。这是代码

var game = new Phaser.Game({
scene: {
create: create
}
});
function create() {
let rect1 = this.add.rectangle(300, 100, 100, 30, 0x00f000, .5);
let rect2 = new Phaser.GameObjects.Rectangle(this, 300, 150, 100, 30, 0xf00000)
this.add.existing(rect2);
let rect3 = this.add.graphics({
fillStyle: {
color: 0x00f0f0
}
});
let rect = new Phaser.Geom.Rectangle(300, 200, 100, 30);
rect3.fillRectShape(rect);
}
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>

rect1使用最简单的一个,只需要 1 行代码。

rect2实例化Phaser.GameObjects.Rectangle类。我想如果我需要一堆类似矩形的对象,我可以在其中创建类的子类,预定义一些属性和方法并实例化我自定义的类似矩形的对象,它会更强大。

rect3使用Phaser.GameObjects.Graphics我无法想象它的用例,它击败了前两个用例。有人可以给我一个提示吗?

简短的回答:

  • 如果您需要用于边界或其他计算的矩形,请使用:new Phaser.Geom.Rectangle(...)
  • 如果您需要一个简单的矩形游戏对象,请使用:this.add.rectangle(...)
    • 如果您不想立即将其添加到场景中,请使用:new Phaser.GameObjects.Rectangle(...)
  • 如果您需要具有更多花里胡哨的特殊矩形游戏对象,请使用:this.add.graphics(...)

长答案:

这取决于手头的任务。由于每个对象或多或少地创建了一个具有不同属性/方法的不同对象。

  • 键入Phaser.GameObjects.Graphics
    是一个游戏对象,但非常"低级",您几乎可以在上面绘制任何东西。 像矩形,圆圈,...
    详细信息可以在这里找到 https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Graphics.html

下面是一个 特殊矩形的示例:https://phaser.io/examples/v3/view/game-objects/graphics/fill-rounded-rectangle

  • 键入Phaser.GameObjects.Rectangle
    是作为Phaser.GameObjects.Graphics的游戏对象,但专门用于创建矩形.
    this.add.rectangle(...)new Phaser.GameObjects.Rectangle(...)创建此类型的矩形。this.add.rectangle只是实现此目的的更方便的方法,并将其直接添加到当前场景中.
    详细信息可以在这里找到 https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Rectangle.html)

下面是一个 基本矩形的示例:https://phaser.io/examples/v3/view/game-objects/shapes/rectangle

类型Phaser.Geom.Rectangle
  • 是一个几何形状,适用于边界和/或其他计算(但您也可以使用它进行绘制).
    详细信息可以在这里找到 https://photonstorm.github.io/phaser3-docs/Phaser.Geom.Rectangle.html

下面是如何使用它来检查游戏对象是否位于特定矩形中的示例:https://phaser.io/examples/v3/view/geom/rectangle/contains-rect

最新更新