【问题标题】:Phaser Sprite for joint between two bodiesPhaser Sprite 用于两个身体之间的关节
【发布时间】:2015-11-23 22:50:37
【问题描述】:

我将Phaser 2.4.4Box2D 插件结合使用来制作一个简单的弹弓游戏(想想愤怒的小鸟)。我遇到的问题是为弹弓的橡皮筋定义一个 Sprite。

这个 Sprite 最简单的形式是一个矩形,它会改变其宽度和角度,以便一端固定在弹弓的弹丸上(可由用户拖动),而另一端固定在弹弓上的一个不可移动的点上弹弓。

这可以通过手动编写一些更新逻辑来解决,以根据弹丸的位置计算每帧的角度和宽度,但这似乎是一个沉重的蛮力解决方案。我想知道是否有人可以向我指出 Phaser 中的一些本机功能,这会使这更容易。

问题似乎在于,橡皮筋并不是真正的“身体”,而更像是两个身体之间的“关节”。据我所知,Phaser 似乎只支持将 Sprite 附加到身体,而不是关节。

【问题讨论】:

    标签: box2d phaser-framework


    【解决方案1】:

    好的,我想我显然回答了我自己的问题。 “蛮力方法”实际上非常简单。只需要在橡皮筋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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      相关资源
      最近更新 更多