Javascript PhaserJS:将物理添加到图形对象

Javascript PhaserJS:将物理添加到图形对象,javascript,game-engine,game-physics,phaser-framework,Javascript,Game Engine,Game Physics,Phaser Framework,大多数示例使用精灵添加物理,但我想将物理添加到使用Graphics类创建的对象中。例如: var square=game.add.graphics(0,0); //一些定义 游戏。物理。街机。启用(方形); 这在图形中根本不起作用,但在精灵中却立即起作用。为什么会这样?我如何才能做到这一点 提前感谢。我不得不做了很多调查,因为这似乎不是标准(至少在教程中是这样),但您必须创建一个BitmapData对象并使用画布绘制图形。这远不如使用game.add.graphics创建圆圈和poligon等

大多数示例使用精灵添加物理,但我想将物理添加到使用Graphics类创建的对象中。例如:

var square=game.add.graphics(0,0);
//一些定义
游戏。物理。街机。启用(方形);
这在图形中根本不起作用,但在精灵中却立即起作用。为什么会这样?我如何才能做到这一点


提前感谢。

我不得不做了很多调查,因为这似乎不是标准(至少在教程中是这样),但您必须创建一个BitmapData对象并使用画布绘制图形。这远不如使用game.add.graphics创建圆圈和poligon等有趣,但效果很好

以下是创建平台的方式:

//创建BitmapData对象,您可以使用它创建图形:
var floor=game.add.bitmapData(400,20)//宽度、高度
//这将使用颜色填充整个对象:
地面填充(200100,0,1)//红,绿,蓝,阿尔法
//地板将有一个画布上下文对象来绘制图形。
//以下是更多的例子:
//http://www.html5canvastutorials.com/tutorials/html5-canvas-circles/
//完成绘制后,需要将对象转换为精灵:
var floorSprite=game.add.sprite(100500,floor);
//这将向对象添加物理并添加.body属性:
游戏。物理。街机。启用(floorSprite);
//将对象停止到位并防止其他对象替换它:
floorSprite.body.allowGravity=false;
floorSprite.body.immoved=true;
这就是如何创建一个平台,而不必依赖图像文件。我看过一些使用文件而不是生成平台的教程,我认为这是一种浪费

另外,我认为需要将向量转换为位图是因为向量物理在硬件上非常繁重(或者看起来如此)


希望这能帮助更多的人

也许它适用于以下情况:

anySprite.addChild(图形对象)

在那之后:


游戏。物理。街机。启用(任意精灵)

这很有帮助,非常感谢!我到处找这个,很高兴终于找到了。然而,这看起来很愚蠢,你不能直接把物理添加到图形中。我希望自从写这篇文章以来,Phaser已经有了改进(现在是2.6版)。如果有人知道,请告诉我。@BradyDowling我不是游戏开发人员,所以在发现PhaserJS的问题后,我放弃了它。如果我必须使用画布来添加物理到我的游戏中,我最好学习画布而不是相位器。根据,你的建议是正确的方法。我想知道这是否仍然是Phaser 2.6.2的首选方法。任何进一步的想法都会有帮助。