设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 八云紫
打印 上一主题 下一主题

[RMVX发布] 新手教程--从0开始学RGSS2(2013-09-21 修复索引地址)

  [复制链接]

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

1
发表于 2010-12-23 00:17:36 | 显示全部楼层
消灭烦人的连贴~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

2
发表于 2011-1-9 21:40:48 | 显示全部楼层
回复 一箭烂YiJL 的帖子

"不透明度" 和 透明度 有区别么??

有的话, API 的Color 和 Ruby 的Color 也是有区别的咯.

不要钻牛角尖啦. 再说什么超过 255 修正什么的, F1 里都是有的.(其实是我偷懒)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

3
发表于 2011-1-9 22:03:13 | 显示全部楼层
本帖最后由 铃仙·优昙华院·因幡 于 2011-1-10 10:23 编辑

Rect 矩形

     好吧, 这个其实很不知道怎么组合的, 就单独写一个吧.
   
     RGSS2(Ruby)矩形的矩形使用一个四元组来表示: ( 矩形左上角的 X 坐标, 矩形左上角的 Y 坐标, 宽度, 高度 ) 来表示.
     我们可以创建这么一个矩形: 左上角坐标为( 10, 10) , 宽 20, 高 30 的矩形:
  1. a = Rect.new(10, 10, 20, 30)
复制代码
这里需要注意一个问题: RGSS2 里的 Rect 每个元素都是整数, 也就是说, 就算是使用小数, 也会被取整. 比如:
  1. a = Rect.new(10.0, 10.0, 20.0, 30.0)
  2. p a
复制代码
至于 Ruby 就不知道了. 不过 Ruby 默认有 Rect 类么???

     

     提高:
     Window 里也有 Rect 结构, 定义是:
  1. typedef struct tagRECT
  2. {
  3.     LONG    left;
  4.     LONG    top;
  5.     LONG    right;
  6.     LONG    bottom;
  7. } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
复制代码
Window 的 Rect 四元组应该是(矩形左上角的 X 坐标, 矩形左上角的 Y 坐标, 矩形右下角的 X 坐标, 矩形右下角的 Y 坐标)

     如果需要在 RGSS2 里的矩形切换到 Window 的矩形的话, 应该这样:
  1. rgss2_rect = Rect.new(0, 0, 10, 10)

  2. window_rect = [rgss2_rect.x, rgss2_rect.y, rgss2_rect.x + rgss2_rect.width, rgss2_rect.y + rgss2_rect.height].pack("l*")
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

4
发表于 2011-2-11 20:43:44 | 显示全部楼层
Sprite 精灵 和 Plane 平面


Sprite 精灵
       在 RGSS2 里, 显示图片其实有两个方法: 一个是使用 Bitmap 自己的方法 blt  或者是 stretch_blt 来显示, 但是缺点是, 不能再每帧里都 blt. 那样只能让 VX 的 FPS 降低到个位数, 因为这两个方法的执行时间都是很长的. 另一个方法就是用 Sprite 来显示.

       Bitmap 如果指的是图片数据的话, 那么 Sprite 就是画布. Sprite 的理念和 blt 不一样. blt 是在需要的时候再描绘. 所以每次调用这个方法会消耗大量时间. Sprite 实现将图片加载进 Sprite 里, 在需要的时候显示就可以了, 描绘过程比 blt 要效率的多.

      Sprite 的方法有几个, F1 有介绍, 这里就不多说了.

     具体的使用方法, 请参考 Viewport 类 的例子部分.




Plane 平面
     Plane 平面 和 Sprite 精灵 大部分是一致的, 少了几个特定的方法.
     Plane 平面 和 Sprite 精灵 的最大区别在于 如果要显示的图片小于显示区域的话, Plane 平面 会将该图片填充满显示区域, 但是 Sprite 不会. 例子如下:
   
     Plane 平面:
  1. class Scene_Plane < Scene_Base
  2.   def start
  3.     @v = Viewport.new(0, 0, 400, 400)
  4.     @sprite = Plane.new(@v)
  5.     @sprite.bitmap = Bitmap.new("Graphics/Pictures/1.png")
  6.   end
  7.   def update
  8.   end
  9.   def terminate
  10.     @sprite.bitmap.dispose
  11.     @sprite.dispose
  12.   end
  13. end
复制代码
截图:


换成是 Sprite 的话, 效果就是这样:
  1. class Scene_Plane < Scene_Base
  2.   def start
  3.     @v = Viewport.new(0, 0, 400, 400)
  4.     @sprite = Sprite.new(@v)
  5.     @sprite.bitmap = Bitmap.new("Graphics/Pictures/1.png")
  6.   end
  7.   def update
  8.   end
  9.   def terminate
  10.     @sprite.bitmap.dispose
  11.     @sprite.dispose
  12.   end
  13. end
复制代码
截图:


另外, Plane 只能通过 Viewport 来调节 显示坐标.

点评

也就是平铺效果,那么还有没有伸拉效果?  发表于 2011-10-23 08:46
没有 x y 来的美观.  发表于 2011-2-11 22:38
Plane#ox Plane#oy 来位移也可以  发表于 2011-2-11 22:24
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

5
发表于 2011-2-23 23:10:51 | 显示全部楼层
Font 字型 和 Table 表格


Font 字型

     Font 的作用也大. 一切需要显示文字的地方都是有它的身影. Font 通常是当做 Bitamp 的属性之一 和 Bitmap 一起使用. Font 的属性如下:
     
     size
     设定字体大小, 默认值是 20. 如果需要用到大点的文字的话, 可以修改. 比如

  1.      s = Sprite.new
  2.      s.x = 0
  3.      s.y = 0
  4.      s.bitmap = Bitmap.new(544, 416)
  5.      s.bitmap.draw_text(0, 0, 400, 100, "字号20: 铃仙·优昙华院·因幡")
  6.      s.bitmap.font.size = 30
  7.      s.bitmap.draw_text(0, 50, 400, 100, "字号30: 铃仙·优昙华院·因幡")
  8.      
复制代码
运行就是这样:
     

     bold
     是否设定成粗体. true 为使用粗体. 默认是 false, 也就是不使用.

  1.      s = Sprite.new
  2.      s.x = 0
  3.      s.y = 0
  4.      s.bitmap = Bitmap.new(544, 416)
  5.      s.bitmap.draw_text(0, 0, 400, 100, "普通: 铃仙·优昙华院·因幡")
  6.      s.bitmap.font.bold  = true
  7.      s.bitmap.draw_text(0, 50, 400, 100, "粗体: 铃仙·优昙华院·因幡")
  8.      
复制代码


     italic
     是否设定成斜体. 默认是 false, 不使用

  1.      s = Sprite.new
  2.      s.x = 0
  3.      s.y = 0
  4.      s.bitmap = Bitmap.new(544, 416)
  5.      s.bitmap.draw_text(0, 0, 400, 100, "普通: 铃仙·优昙华院·因幡")
  6.      s.bitmap.font.italic  = true
  7.      s.bitmap.draw_text(0, 50, 400, 100, "斜体: 铃仙·优昙华院·因幡")
  8.      
复制代码


     color
     设定文字的颜色, 为 Color 类的实例

  1.      s = Sprite.new
  2.      s.x = 0
  3.      s.y = 0
  4.      s.bitmap = Bitmap.new(544, 416)
  5.      s.bitmap.draw_text(0, 0, 400, 100, "默认颜色: 铃仙·优昙华院·因幡")
  6.      s.bitmap.font.color = Color.new(244, 11, 209)
  7.      s.bitmap.draw_text(0, 50, 400, 100, "有颜色: 铃仙·优昙华院·因幡")
  8.      
复制代码


     shadow
     设定字体阴影, 注意的是, 阴影是黑色的, 而且不能修改.默认是 使用的, 也就是 ture

  1.      s = Sprite.new
  2.      s.x = 0
  3.      s.y = 0
  4.      s.bitmap = Bitmap.new(544, 416)
  5.      s.bitmap.fill_rect(0, 0, 544, 416, Color.new(255, 255, 255))
  6.      s.bitmap.font.color = Color.new(544, 11, 206)
  7.      s.bitmap.font.shadow = false
  8.      s.bitmap.draw_text(0, 0, 400, 100, "无阴影: 铃仙·优昙华院·因幡")
  9.      s.bitmap.font.shadow = true
  10.      s.bitmap.draw_text(0, 50, 400, 100, "有阴影: 铃仙·优昙华院·因幡")
  11.      
复制代码


      default_name default_size default_bold default_italic default_shadow default_color
     设定字体相关属性的默认值, 分别是 字体名, 字体大小, 粗体标志, 斜体标志, 阴影标志, 颜色标志. 用法和以上的一样. 只是修改这些值, 影响的是整个 VX 的全部字体的默认值.  


Table 表格
  
    感觉没啥好说的. 只是在处理多个数据的时候, 处理效率比数组(Array) 要高. 其他的个人感觉没有 Array 好用. 属性什么的, 看 F1 的可以了. (偷懒一下 > <)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

6
发表于 2011-5-11 10:50:41 | 显示全部楼层
回复 selintt 的帖子

RPG 模块说白了, 就是 data 里文件的基本数据结构, 用来保存大部分的 游戏数据, 比如 道具, 武器, 敌人什么的. 当然不包括图片.

这个看 F1 , 搜索 "RPG::" 就可以看到了~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-10 21:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表