Project1
标题:
如何绘制类似于明日方舟的弹药槽?
[打印本页]
作者:
sxjkjly8010
时间:
2022-7-2 17:37
标题:
如何绘制类似于明日方舟的弹药槽?
本帖最后由 sxjkjly8010 于 2022-7-2 17:42 编辑
(, 下载次数: 131)
上传
点击文件名下载附件
在一个固定的宽度内根据弹药数自动计算格子数,两个格子中间会有空隙,然后填充这个宽度里?就像图片里这样,弹药数减少后也会减少相应的格子
PS:如果弹药很多甚至会密密麻麻的
(, 下载次数: 150)
上传
点击文件名下载附件
作者:
百里_飞柳
时间:
2022-7-2 17:37
本帖最后由 百里_飞柳 于 2022-7-2 20:33 编辑
啊这,你至少需要了解RM里是如何绘制的吧
这个并不难的,主要是需要知道宽度和弹药数、弹药上限
# bitmap 为需要绘制的位图
# x, y, w, h 为位图上绘制弹药槽的区域(数字)
# v 为当前弹药量(数字)
# v_max 为弹药总量(数字)
def draw_bullets(bitmap, x, y, w, h, v, v_max)
# 预先指定弹药间的空隙,你也可以依据弹药上限来动态调整空隙值
offset = 1
# 首先计算每格弹药的宽度
d = (w - offset * (v_max - 1)) * 1.0 / v_max
# 因为一定是小数,四舍五入
d = d.round
# 然后绘制背景
bitmap.fill_rect(x, y, w, h, Color.new(150, 0, 0))
# 再逐个绘制弹药
v.times do |i|
_x = x + d * i + offset * i
bitmap.fill_rect(_x, y, d, h, Color.new(255, 0, 0))
end
end
复制代码
但是RM里是像素为最小单位的,所以肯定会算出小数,然后没法平均分配,比如这样
上限是 10,当前是 9,明显是计算出来小数,但自动取整后的偏差
(, 下载次数: 162)
上传
点击文件名下载附件
所以在RM里一般都是绘制渐变或纯色的槽,至少看不出这么明显的偏移(x)
--------------------------------------------
等等,我发现有个地方写错了,修改了下,现在应该没大问题了
还是有点空隙,真的就是因为浮点数被强制取整了
(, 下载次数: 167)
上传
点击文件名下载附件
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X5.0