Phaser Sprite 用于两个物体之间的连接
Phaser Sprite for joint between two bodies
我正在结合使用 Phaser 2.4.4
和 Box2D
插件来制作一个简单的弹弓游戏(想想愤怒的小鸟)。我 运行 遇到的问题是为弹弓的橡皮筋定义 Sprite。
在其最简单的形式中,此 Sprite 将是一个矩形,它会改变其宽度和角度,以便一端保持固定在弹弓的弹丸上(用户可拖动),而另一端保持固定在一个不可移动的点上在弹弓上。
这可以通过手动编写一些更新逻辑来根据弹丸的位置计算每帧的角度和宽度来解决,但这似乎是一个沉重的 brute-force 解决方案。我想知道是否有人可以向我指出 Phaser 中的一些本机功能,这将使这更容易。
问题似乎是橡皮筋并不是真正的"body",而更像是两个身体之间的"joint"。据我所知,Phaser 似乎只支持将 Sprites 附加到身体,而不是关节。
好吧,我想我显然回答了我自己的问题。 "brute force approach" 其实很简单。只需要在橡皮筋 Sprite 上定义一个 Phaser.Point
对象来记住它的起始位置,然后定义一个 stretch()
方法在更新时调用,它使用 Point.distance()
和 Point.angle()
.像这样:
stretch(pellet) {
let pellet_distance = this.start_pos.distance(pellet);
let pellet_angle = this.start_pos.angle(pellet);
this.width = pellet_distance + pellet.width;
this.rotation = pellet_angle;
}
我正在结合使用 Phaser 2.4.4
和 Box2D
插件来制作一个简单的弹弓游戏(想想愤怒的小鸟)。我 运行 遇到的问题是为弹弓的橡皮筋定义 Sprite。
在其最简单的形式中,此 Sprite 将是一个矩形,它会改变其宽度和角度,以便一端保持固定在弹弓的弹丸上(用户可拖动),而另一端保持固定在一个不可移动的点上在弹弓上。
这可以通过手动编写一些更新逻辑来根据弹丸的位置计算每帧的角度和宽度来解决,但这似乎是一个沉重的 brute-force 解决方案。我想知道是否有人可以向我指出 Phaser 中的一些本机功能,这将使这更容易。
问题似乎是橡皮筋并不是真正的"body",而更像是两个身体之间的"joint"。据我所知,Phaser 似乎只支持将 Sprites 附加到身体,而不是关节。
好吧,我想我显然回答了我自己的问题。 "brute force approach" 其实很简单。只需要在橡皮筋 Sprite 上定义一个 Phaser.Point
对象来记住它的起始位置,然后定义一个 stretch()
方法在更新时调用,它使用 Point.distance()
和 Point.angle()
.像这样:
stretch(pellet) {
let pellet_distance = this.start_pos.distance(pellet);
let pellet_angle = this.start_pos.angle(pellet);
this.width = pellet_distance + pellet.width;
this.rotation = pellet_angle;
}