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

Project1

 找回密码
 注册会员
搜索
查看: 106|回复: 0
打印 上一主题 下一主题

[原创发布] [脚本]窗口类绘制行走图可指定身体朝向

[复制链接]

Lv2.观梦者

梦石
0
星屑
463
在线时间
213 小时
注册时间
2011-4-16
帖子
72
跳转到指定楼层
1
发表于 2024-10-16 22:48:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
RUBY 代码复制
  1. #==============================================================================
  2. #                 在窗口中绘制不同身体朝向的角色行走图
  3. # 调用方法·例: @xxxx_window.draw_character_turn(character_name, character_index, x, y)
  4. #==============================================================================
  5. class Window_Base < Window
  6. # 定义身体朝向的常量 (0-下,1-左,2-右,3-上)
  7.   TURN = 3  
  8.   #--------------------------------------------------------------------------
  9.   # * 绘制角色图像   (原有方法,绘制的行走图身体朝下)
  10.   #     character_name  : 角色图像文件名
  11.   #     character_index : 角色图像索引
  12.   #     x     : 绘制点 x-坐标
  13.   #     y     : 绘制点 y-坐标
  14.   #--------------------------------------------------------------------------
  15.   def draw_character(character_name, character_index, x, y)
  16.     return if character_name == nil    # 检测角色位图是否为空
  17.     bitmap = Cache.character(character_name)  # 从游戏的缓存中获取角色的位图
  18.     sign = character_name[/^[\!\$]./]# 使用正则表达式来匹配角色名称的第一个字符,如果匹配成功,sign 变量将存储该字符。   
  19.     if sign != nil and sign.include?('$') # 检查 sign 变量是否不为 nil 并且包含字符 $。
  20.       cw = bitmap.width / 3   # 半身头像位图的宽度
  21.       ch = bitmap.height / 4  # 半身头像位图的高度
  22.     else
  23.       cw = bitmap.width / 12  # 行走图宽度
  24.       ch = bitmap.height / 8  # 行走图高度
  25.     end
  26.     n = character_index       # 存储角色位图索引
  27. # x 坐标是根据图像索引和每行的图像数量(对于全身图像通常是 4 个)计算的,y 坐标是根据图像索引除以每行的图像数量计算的。cw 和 ch 是源区域的宽度和高度。
  28.     src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)   #  通过Rect定义位图绘制区域
  29. # blt 是 Bitmap 类的方法,将源位图(bitmap)中的一个区域(由 src_rect 定义)绘制到窗口内容位图(self.contents)上的指定位置(由 x 和 y 坐标定义)
  30. # x - cw / 2 和 y - ch 是目标位置的坐标,它们确保角色图像居中绘制在指定的 x 和 y 坐标上。
  31.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect) # 执行实际的绘制操作
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # * 绘制角色行走图 - 身体朝上
  35.   #--------------------------------------------------------------------------  
  36.   def draw_character_turn(character_name, character_index, x, y)
  37.     return if character_name == nil
  38.     bitmap = Cache.character(character_name)
  39.     sign = character_name[/^[\!\$]./]
  40.     if sign != nil
  41.       cw = bitmap.width / 12
  42.       ch = bitmap.height / 8
  43.     end
  44.     n = character_index
  45.     src_rect = Rect.new((n%4*3+1)*cw, (n/4*4+TURN)*ch, cw, ch)
  46.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  47.   end
  48. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-23 15:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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