标签: libgosu

为什么Gosu隐藏我的鼠标指针?

我正在使用Gosu gem进行一些图形编程.问题是,当我创建一个Window时,我的鼠标指针被隐藏了.我可以猜到鼠标在某个时刻的位置,我可以直观地点击,但我的用户可能没有.

如何显示指针?

ruby mouse graphics libgosu

6
推荐指数
2
解决办法
2565
查看次数

为什么rubygame和gosu比纯opengl慢?

我正在寻找一个好的图形框架来在Ruby中制作一个漂亮的2D游戏.我做了3个非常简单的测试,看看GosuRubygame之间哪个图形Ruby框架更快.该测试创建1000个"Square"类的实例,使用框架的方法以最简单的方式移动和绘制红色方块.第三个测试是相同的,但在纯OpenGL实现(没有任何框架).结果如下:

PURE OPENGL(使用ruby-opengl)80Fps: 替代文字http://grab.by/JTM

GOSU(使用ruby-opengl + gosu)46Fps: alt text http://grab.by/JTC

RUBYGAME(使用ruby-opengl + ruby​​game + rsdl)32Fps: alt text http://grab.by/JTw

为什么纯OpenGL测试和Rubygame或Gosu测试之间存在如此大的fps差异?(他们都使用opengl)

那些框架真的可靠还是我应该使用更好的框架?(我不认为自己经历了在纯OpenGL中加载图像声音和字体的整个过程:p)

你怎么看?

ruby opengl rubygame libgosu

6
推荐指数
1
解决办法
2524
查看次数

在 Ruby 中与 Chipmunk 和 Gosu 一起绘制多边形

我是游戏开发的新手,我认为一起尝试 Gosu、Ruby 和 Chipmunk 会很有趣。到目前为止,我在二维自上而下的场地上有一个球员和一个球,并且它们发生了碰撞。我现在的问题是我希望我的玩家是一个正方形。
我高中时数学很糟糕,那是很多年前的事了。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
Run Code Online (Sandbox Code Playgroud)

我现在有这个代码来获取我的多边形:

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))
Run Code Online (Sandbox Code Playgroud)

这最终给了我一个附加到我的方形 png 上的形状,但看起来好像 0,0 是图像的左上角,而实际的多边形甚至从图像的顶部左侧开始。

所以我认为我应该将“偏移”设置为多边形宽度的一半,但这并没有给我正确的结果。

我确信对于这里的大多数人来说这是基本的。但在游戏开发方面我还处于初级阶段。
有人可以向我解释一下吗?

编辑
是我截至 2011 年 5 月 28 日的完整代码

ruby chipmunk libgosu

5
推荐指数
1
解决办法
1938
查看次数

在 Gosu 中居中文本

我一直无法将 Gosu 库中的文本居中到屏幕的绝对中间。

require 'gosu'

class GameWindow < Gosu::Window
  def initialize (width=800, height=600, fullscreen=false)
    super
    self.caption = 'Hello'
    @message = Gosu::Image.from_text(
        self, 'HELLO WORLD', Gosu.default_font_name, 45)
  end

  def draw
    @message.draw(377.5,277.5,0)
  end
end

window = GameWindow.new
window.show 
Run Code Online (Sandbox Code Playgroud)


我的第一种方法是取height屏幕的 ,减去文本的高度45,然后除以 2。现在这似乎在垂直对齐时起作用。

在此处输入图片说明

然而,水平是一个不同的故事......它似乎是在文本的左上角并将其居中,而不是文本的中间。

在此处输入图片说明

有人有这个公式吗?我尝试了很多东西,但只差一点。

ruby libgosu

5
推荐指数
1
解决办法
1190
查看次数

矢量'玩家'而不是使用Chingu和Gosu的图像

Chingu示例看起来像这样:

require 'rubygems'
require 'chingu'

class Game < Chingu::Window
  def initialize
    super
    @player = Player.new
  end
end

class Player < Chingu::GameObject
  def initialize(options = {})
    super(options.merge(:image => Gosu::Image["player.png"])
  end
end

Game.new.show
Run Code Online (Sandbox Code Playgroud)

如果我想用线而不是图像绘制Player对象,我将如何进行此操作?

以下代码看似直观,但我无法让它工作!

class Player < Chingu::BasicGameObject
  def initialize(options = {})
    super
    @radius = options[:radius]
    @c = Gosu::Color.new(0xffff0000)
  end

  def draw
    $window.draw_rect([@x-1,@y+1,@x+1,@y+1,@x+1,@y-1,@x+1,@y+1],@c,1)
  end
end
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

ruby libgosu

3
推荐指数
1
解决办法
766
查看次数

Gosu:如何调整图像大小以适合窗口?

使用 Ruby Gosu,我以这种方式绘制图像:

@background_image.draw(0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

图像比窗口大,有没有办法神奇地调整它的大小以适应窗口?我试图避免硬编码factor_xfactor_y.

ruby drawing libgosu

1
推荐指数
1
解决办法
1526
查看次数

标签 统计

libgosu ×6

ruby ×6

chipmunk ×1

drawing ×1

graphics ×1

mouse ×1

opengl ×1

rubygame ×1