Project1
标题: 关于血条和减血的问题 [打印本页]
作者: 大放异彩 时间: 2019-4-22 08:17
标题: 关于血条和减血的问题
本帖最后由 大放异彩 于 2019-4-22 22:03 编辑
已经自己解决 版主可对本帖进行分类
-
QQ截图20190422080836.png
(7.13 KB, 下载次数: 20)
作者: 灯笼菜刀王 时间: 2019-4-22 08:17
你这脑洞也够新奇的
窗口描绘血条,原理就是利用"矩形框" 来限制图片宽度,形成槽的效果, 从右往左, 通过改变矩形宽度来实现, 这个时候, 血条图的矩形是 X,Y,高都不动, 宽度随着血量百分比变化, 从下往上一样, X,Y,宽不动, 高度变化
而逆向血条, 做法就是 宽高不变, XY变动
Rect.new(x,y+ height - hp/maxhp * height,width,height)
这样就是从上往下缩的血槽了
作者: 大放异彩 时间: 2019-4-22 09:21
可以改成: bitmap.width,actor.hp*1.0/actor.maxhp*bitmap.height
但却是从下往上减的
作者: 灯笼菜刀王 时间: 2019-4-22 09:43
本帖最后由 灯笼菜刀王 于 2019-4-22 09:45 编辑
有没有想过 Rect.new(x,y,width,height) 这两个参数是干嘛用的么
作者: 大放异彩 时间: 2019-4-22 22:01
没办法了,只能用最笨的办法了,脚本实在是不怎么在行
就这样了吧
作者: miantouchi 时间: 2019-4-23 12:16
本帖最后由 miantouchi 于 2019-4-23 20:52 编辑
rect = Rect.new(0, 0, @bmp_bak.width,@bmp_bak.height) #图片黑色背景条
self.contents.blt(0, 0, @bmp_bak, rect) #图片黑色背景条
rect = Rect.new(0, 0, @bmp_hp.width,actor.hp.to_f/actor.maxhp.to_f*@bmp_hp.height.to_f) #图片红色血条,截取血条变化的高度
self.contents.blt(0, @bmp_hp.height.to_f-actor.hp.to_f/actor.maxhp.to_f*@bmp_hp.height.to_f,@bmp_hp, rect) #图片血条blt,0,y值变化
刚刚研究的,大家交流交流,感觉也不是太好,但是能实现这个功能
rect = Rect.new(0, 0, @bmp_bak.width,@bmp_bak.height) #图片黑色背景条
self.contents.blt(0, 0, @bmp_bak, rect) #图片黑色背景条
rect = Rect.new(0, 0, @bmp_hp.width,actor.hp.to_f/actor.maxhp.to_f*@bmp_hp.height.to_f) #图片红色血条,截取血条变化的高度
self.contents.blt(0, @bmp_hp.height.to_f-actor.hp.to_f/actor.maxhp.to_f*@bmp_hp.height.to_f,@bmp_hp, rect) #图片血条blt,0,y值变化
刚刚研究的,大家交流交流,感觉也不是太好,但是能实现这个功能
作者: 大放异彩 时间: 2019-4-23 16:42
actor = $game_party.actors[0]
bitmap = RPG::Cache.character(actor.character_name,actor.character_hue)
bitmap = RPG::Cache.picture("XT/HP")
@图标.bitmap.blt(16,9,bitmap,Rect.new(0,0- bitmap.height + actor.hp*1.0/actor.maxhp * bitmap.height,bitmap.width,bitmap.height))
bitmap = RPG::Cache.picture("XT/MP")
@图标.bitmap.blt(751,9,bitmap,Rect.new(0,0- bitmap.height + actor.sp*1.0/actor.maxsp * bitmap.height,bitmap.width,bitmap.height))
bitmap = RPG::Cache.picture("XT/血条2")
@图标.bitmap.blt(0,0,bitmap,Rect.new(0,0,bitmap.width,bitmap.height))
actor = $game_party.actors[0]
bitmap = RPG::Cache.character(actor.character_name,actor.character_hue)
bitmap = RPG::Cache.picture("XT/HP")
@图标.bitmap.blt(16,9,bitmap,Rect.new(0,0- bitmap.height + actor.hp*1.0/actor.maxhp * bitmap.height,bitmap.width,bitmap.height))
bitmap = RPG::Cache.picture("XT/MP")
@图标.bitmap.blt(751,9,bitmap,Rect.new(0,0- bitmap.height + actor.sp*1.0/actor.maxsp * bitmap.height,bitmap.width,bitmap.height))
bitmap = RPG::Cache.picture("XT/血条2")
@图标.bitmap.blt(0,0,bitmap,Rect.new(0,0,bitmap.width,bitmap.height))
由于血槽是从上到下来减少,如果想做成球状的血槽,每次减血血槽都会往下挪,球状也会跟着向下移动,然后我将球状血槽素材改成方形,再额外增加1层“球型血槽框”的素材来覆盖上去,这样看上去就是球状的了,再次感谢灯笼前辈的帮忙,我脚本还在学习当中,目前也只是练习部分修改,特别复杂的功能目前还不敢想
作者: 灯笼菜刀王 时间: 2019-4-23 18:05
不好意思,之前算法有误, 这才是正确的
圆形血槽.rar
(193.92 KB, 下载次数: 135)
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |