- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我是游戏开发的新手,我认为一起尝试 Gosu、Ruby 和 Chipmunk 会很有趣。到目前为止,我在 2d 自上而下的 field 上有一名球员和一个球,他们发生了碰撞。我现在的问题是我希望我的播放器是正方形的。
我在高中时数学很烂,那是很多年前的事了。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 是图像的左上角,而实际的多边形甚至从图像的左上角开始。
所以我假设我应该将“偏移量”设置为我的多边形宽度的一半,但这并没有给我正确的结果。
我敢肯定,对于这里的大多数人来说,这是基础知识。但在游戏开发方面,我仍然处于初级阶段。
有人可以向我解释一下吗?
编辑
Here是我截至 2011 年 5 月 28 日的完整代码
最佳答案
看起来您的问题源于绘图和碰撞源之间的不一致。
实际上,您的球是以 x,y 为中心绘制的,而玩家是以左上角在 x,y 上绘制的。再加上您的 Player 形状不以 x,y 为中心,这给您带来了困难。
要使玩家的绘图居中,只需使用角度为 0 的 draw_rot 方法即可避免旋转图像。
class Player
def draw
@image.draw_rot(@shape.body.pos.x, @shape.body.pos.y, 1, 0, 0.5, 0.5, 1, 1)
end
end
要使花栗鼠形状适合居中的玩家图像,您需要将顶点偏移形状大小的一半。您可以对此进行硬编码
class Player
def initialize(space, image)
...
verts = Array.new
verts.push(CP::Vec2.new(-16,16))
verts.push(CP::Vec2.new(16,16))
verts.push(CP::Vec2.new(16,-16))
verts.push(CP::Vec2.new(-16,16))
...
end
end
或者只是在运行时使用
CP::recenter_poly(verts)
在向形状添加 verts
之前。
有了这些更改,我怀疑您的物理行为会更像您预期的那样。
关于ruby - 在 Ruby 中使用 Chipmunk 和 Gosu 绘制多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684974/
最近我将我的 Guidewire 工作室从版本 8 升级到版本 9。从那时起,数据库查询在暂存器中运行时会抛出错误。相同的代码在版本 8 中工作正常。请在下面找到代码和错误。 代码 var objec
来自I gather , Gosu 只是 JVM 的 C#(这是一件好事)。这是真的吗? Gosu 和 C# 之间有什么区别(除了类库和它在 JVM 上运行的事实)? 最佳答案 我们没有将 Gosu
我的代码没有给出所需的输出并显示上述错误。 require 'gosu' def media_path(file) File.join(File.dirname(File.dirname(
我正在使用 Gosu 制作一个简单的游戏,但是我不想在我的游戏中使用外部 Sprite ,我宁愿使用代码绘制图像,是否可以像使用外部图像一样使用代码绘制的图像。 注意:我只想画基本的形状,比如正方形。
我想知道Gosu类和增强类之间的区别。因为我们在增强功能方面可以做的一切,那么我们在Gosu类中可以做到的也需要Gosu Enhancement。 最佳答案 Gosu类就像Java类一样。 使您感到困
我在 Guidewire (GOSU) 工作,我注意到互联网上没有太多关于这种语言的信息。在这里试试我的运气。 我正在 guidewire studio 中创建一个 GX 模型,我正在尝试映射一个属性
我一直无法将 Gosu 库中的文本居中放置在屏幕的绝对中间。 require 'gosu' class GameWindow < Gosu::Window def initialize (widt
我对 Gosu 不是很了解,所以这段代码让我很困惑。我用谷歌搜索等,但无济于事。这段代码中的反斜杠有什么作用? GET_STUFF.execute(\ -> { var gig = wit
它具体化了泛型……它是如何实现的?与 C# 的泛型有什么显着区别? 最佳答案 与C#泛型的区别:针对泛型类的不同实例化,C#在运行时生成类。 Gosu 没有:一个泛型类对应一个在运行时使用的类。类型信
Gosu 无法在我的 Mountain Lion (10.8.3) 上安装。这是我得到的错误: Building native extensions. This could take a while
我正在使用 Gosu gem 进行一些图形编程。问题是,当我创建一个窗口时,我的鼠标指针被隐藏了。我可以猜到鼠标在某个时刻的位置,我可以凭直觉点击,但我的用户可能不会。 如何显示指针? 最佳答案 如果
我正在尝试制作一个非常简单的点击计数器,但我坚持让点击计数器在屏幕上和代码本身中递增。 require 'rubygems' require 'gosu' module ZOrder BACK
我正在尝试在 FreeBSD 上安装这个 Ruby gem,但失败并出现以下错误: # gem install gosu Building native extensions. This could
我正在尝试在我的 Ubuntu 计算机上安装 Gosu。为了安装 gem,我尝试了“gem install gosu”,但我收到一条我无法理解的错误消息。它说“无法构建 gem native 扩展”。
Docker 总是有一个 USER 命令以特定用户身份运行进程,但通常很多东西都必须以 ROOT 身份运行。 我见过很多使用 ENTRYPOINT 和 gosu 来降低进程运行的图像。 我仍然对
我试着 gem install gosu 但我收到很多关于缺少头文件的编译器消息,包括 sndfile.h。是否有编译 gosu gem 所需的 debian 软件包列表? 最佳答案 见 https:
我坐在这里,我认为这是一个非常简单的错误,我只是想不通.. 我试图学习如何使用 Ruby 使用 Gosu gem 制作游戏,但遇到了减速带。这是我的代码。 require "gosu" class H
我想避免创建 switch case,而是使用 enum,但在编写以下代码时,我收到编译错误,提示 unexpected token public: public enum Status { IN
我在调用玩家的 x 位置和 y 位置时遇到问题。当我用 Projectile 类调用 origin_object.x 和 origin_object.y 时,它给我这个错误: asteroids.rb
我正在使用 Gosu 在 Ruby 中创建生命游戏。我的代码如下。现在,当我运行“ruby gosu.rb”时,它会打开具有适当尺寸的窗口,并按原样预填充 World。 但是一旦我取消注释“@game
我是一名优秀的程序员,十分优秀!