我是游戏开发的新手,我认为一起尝试 Gosu、Ruby 和 Chipmunk 会很有趣。到目前为止,我在 2d Top-Down 场上有一个球员和一个球,它们发生了碰撞。我现在的问题是我希望我的球员是一个正方形。
我在高中时数学很烂,那是太多年前的事了。Chipmunk 的文档说明了如何绘制多边形:
# Create a poly collision shape attached to the given body at
# the given offset with the given vertexes. _verts_ must be an
# Array of CP::Vect with a counterclockwise winding.
def initialize(body, verts, offset); end
我现在有这个代码来获取我的多边形:
verts = Array.new
verts.push(CP::Vec2.new(0,32))
verts.push(CP::Vec2.new(32,32))
verts.push(CP::Vec2.new(32,0))
verts.push(CP::Vec2.new(0,0))
@shape = CP::Shape::Poly.new(@body, verts, CP::Vec2.new(0,0))
这最终给了我一个附加到我的方形 png 的形状,但它看起来好像 0,0 是图像的左上角,而实际的多边形开始于图像的左上角甚至更远。
所以我认为我应该将“偏移”设置为多边形宽度的一半,但这并没有给我正确的结果。
我敢肯定,对于这里的大多数人来说,这是基本的。但在游戏开发方面,我仍然处于初级阶段。
有人可以向我解释一下吗?
编辑
这是我截至 2011 年 5 月 28 日的完整代码