|
本帖最后由 百里_飞柳 于 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,明显是计算出来小数,但自动取整后的偏差
所以在RM里一般都是绘制渐变或纯色的槽,至少看不出这么明显的偏移(x)
--------------------------------------------
等等,我发现有个地方写错了,修改了下,现在应该没大问题了
还是有点空隙,真的就是因为浮点数被强制取整了
|
评分
-
查看全部评分
|