Project1
标题:
随机选择指定动画范围的技能动画作为技能动画
[打印本页]
作者:
火ZHI意志
时间:
2010-10-1 15:15
标题:
随机选择指定动画范围的技能动画作为技能动画
本帖最后由 火ZHI意志 于 2010-10-1 15:58 编辑
如题
举个例子:
比如技能十字斩制定了两个攻击动画,一个是从右往左,另一个是从上往下
战斗中是用十字斩以后随机出现第一个或者第二个攻击动画,每次使用前都要随机选择,也就是说战斗中技能动画不是固定的效果
我要的是这样的效果,独立的系统
作者:
ONEWateR
时间:
2010-10-1 15:15
本帖最后由 ONEWateR 于 2010-10-2 15:07 编辑
module RPG
class Skill
def name
return @name.split(/,/)[0]
end
def animation1_id
a = []
@name.split(/,/).each {|i|a.push i.to_i}
@b = rand(a[2]-a[1]+1)
return @animation1_id if a.size < 5
return a[1]+@b
end
def animation2_id
a = []
@name.split(/,/).each {|i|a.push i.to_i}
return @animation2_id if a.size < 5
return a[3]+@b if a[2]-a[1] == a[4]-a[3]
return rand(a[4]-a[3]+1)+a[3]
end
end
end
复制代码
使用说明:
1.技能名称命名规则: 技能名称,动画1编号1,动画1编号2,动画2编号1,动画2编号2
如 十字斩,1,10,11,20
2.编号2要比编号1
大
3.当动画1、2中的编号1和编号2
差值一样
,则会对应。如 十字斩动画1为6,则动画2为16
如果差值不一样,则动画2会在范围随机。
作者:
后知后觉
时间:
2010-10-1 15:51
Scene_Battle 4 找到
target.animation_id = @animation2_id
改成
target.animation_id = @animation2_id + rand(2)
还可以对 @animation2_id 做一些判断来决定是否要加 rand(2)
作者:
火ZHI意志
时间:
2010-10-1 21:29
我想说我想要的是独立的系统…………
作者:
后知后觉
时间:
2010-10-1 22:32
本帖最后由 后知后觉 于 2010-10-1 22:40 编辑
成品系统也就那么些行.
module RPG
class Animation
def hzhj_rand
if @hzhj_rand.nil?
if (/([0-9]+)/).match(@name) != nil
@name.sub(/([0-9]+)/){ @hzhj_rand = $1.to_i.abs }
else
@hzhj_rand = 0
end
end
return @hzhj_rand
end
end
class Sprite < ::Sprite
if not methods.include?("hzhj_rand_animation")
alias hzhj_rand_animation animation
end
def animation(*args)
if args[0] != nil
if args[0].hzhj_rand > 0
result_id = args[0].id + rand(args[0].hzhj_rand)
args[0] = $data_animations[result_id]
end
end
hzhj_rand_animation(*args)
end
end
end
复制代码
你是有脚本基础的.那么我就说一下这段代码的原理吧.
首先是给 数据库-动画 增加了一个只读的属性 hzhj_rand
这个属性的设置方法为在动画的名字里写入一个 整数.
就现在的正则表达式来看.只要你的动画名字里出现了 数字.
那么就认为你设置了这个属性.
取的是动画名字里的第一个整数.
如果动画名字里没有设置这个属性.那么就默认为 0.
然后重定义了一下.RPG::Sprite 类的 播放动画的方法.
在播放动画前增加了对该动画的 hzhj_rand 属性的判断.
如果该属性大于0.
那么就计算出 目前动画ID + rand(hzhj_rand)
然后将计算出来的动画替换掉原来的动画进行播放.
举例:
比如 数据库第 50 号动画的名字叫 "火焰 3“
那么在播放这个 50 号动画的时候
就是在播放 50 + rand(3) 号动画(50/51/52中的一个).
有一个小小的不足就是.
当这样的动画被应用到全体技能的时候.
播放该动画的对象可能不统一.
直接改 Scene 的话那冲突就猛增了.
像这样改.冲突会小很多.
作者:
火ZHI意志
时间:
2010-10-2 08:56
本帖最后由 火ZHI意志 于 2010-10-2 09:24 编辑
我可能没说清楚 我的原来想法就是事先设置两个数组 分别是两套技能动画动画(包括出招和击中动画都是配好的) …………
也就是说播放一个出招动画后,对应的对象方动画就是和出招动画是事先配好的动画…………
照LS这样做的话会导致混乱的
作者:
nijunxin12321
时间:
2010-10-2 09:56
提示:
作者被禁止或删除 内容自动屏蔽
作者:
火ZHI意志
时间:
2010-10-2 15:55
这下对了~ 感谢下~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1