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

Project1

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

[已经解决] 如何绘制类似于明日方舟的弹药槽?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1057
在线时间
208 小时
注册时间
2019-4-11
帖子
59
跳转到指定楼层
1
发表于 2022-7-2 17:37:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
80星屑
本帖最后由 sxjkjly8010 于 2022-7-2 17:42 编辑

在一个固定的宽度内根据弹药数自动计算格子数,两个格子中间会有空隙,然后填充这个宽度里?就像图片里这样,弹药数减少后也会减少相应的格子

PS:如果弹药很多甚至会密密麻麻的

最佳答案

查看完整内容

啊这,你至少需要了解RM里是如何绘制的吧 这个并不难的,主要是需要知道宽度和弹药数、弹药上限 但是RM里是像素为最小单位的,所以肯定会算出小数,然后没法平均分配,比如这样 上限是 10,当前是 9,明显是计算出来小数,但自动取整后的偏差 所以在RM里一般都是绘制渐变或纯色的槽,至少看不出这么明显的偏移(x) -------------------------------------------- 等等,我发现有个地方写错了,修改了下,现在应该没大问题 ...

Lv6.析梦学徒

老鹰

梦石
40
星屑
34755
在线时间
6741 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2022-7-2 17:37:42 | 只看该作者
本帖最后由 百里_飞柳 于 2022-7-2 20:33 编辑

啊这,你至少需要了解RM里是如何绘制的吧

这个并不难的,主要是需要知道宽度和弹药数、弹药上限

  1. # bitmap 为需要绘制的位图
  2. # x, y, w, h 为位图上绘制弹药槽的区域(数字)
  3. # v 为当前弹药量(数字)
  4. # v_max 为弹药总量(数字)
  5. def draw_bullets(bitmap, x, y, w, h, v, v_max)
  6.   # 预先指定弹药间的空隙,你也可以依据弹药上限来动态调整空隙值
  7.   offset = 1
  8.   # 首先计算每格弹药的宽度
  9.   d = (w - offset * (v_max - 1)) * 1.0 / v_max
  10.   # 因为一定是小数,四舍五入
  11.   d = d.round
  12.   # 然后绘制背景
  13.   bitmap.fill_rect(x, y, w, h, Color.new(150, 0, 0))
  14.   # 再逐个绘制弹药
  15.   v.times do |i|
  16.     _x = x + d * i + offset * i
  17.     bitmap.fill_rect(_x, y, d, h, Color.new(255, 0, 0))
  18.   end
  19. end
复制代码


但是RM里是像素为最小单位的,所以肯定会算出小数,然后没法平均分配,比如这样
上限是 10,当前是 9,明显是计算出来小数,但自动取整后的偏差


所以在RM里一般都是绘制渐变或纯色的槽,至少看不出这么明显的偏移(x)

--------------------------------------------
等等,我发现有个地方写错了,修改了下,现在应该没大问题了
还是有点空隙,真的就是因为浮点数被强制取整了

评分

参与人数 2星屑 +100 +2 收起 理由
alexncf125 + 100 + 1 认可答案
sxjkjly8010 + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 02:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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