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

Project1

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

[已经过期] 随机选择指定动画范围的技能动画作为技能动画

[复制链接]

Lv1.梦旅人

剑仙·影羽

梦石
0
星屑
172
在线时间
224 小时
注册时间
2010-3-20
帖子
1580
跳转到指定楼层
1
发表于 2010-10-1 15:15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1星屑
本帖最后由 火ZHI意志 于 2010-10-1 15:58 编辑

如题
举个例子:
比如技能十字斩制定了两个攻击动画,一个是从右往左,另一个是从上往下
战斗中是用十字斩以后随机出现第一个或者第二个攻击动画,每次使用前都要随机选择,也就是说战斗中技能动画不是固定的效果
我要的是这样的效果,独立的系统

最佳答案

查看完整内容

使用说明: 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:18

——至今为止,谁也没能分析出他们为什么会因为说了这些话而死。

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
2
发表于 2010-10-1 15:15:50 | 只看该作者
本帖最后由 ONEWateR 于 2010-10-2 15:07 编辑
  1. module RPG
  2.   class Skill
  3.     def name
  4.       return @name.split(/,/)[0]
  5.     end
  6.     def animation1_id
  7.       a = []
  8.       @name.split(/,/).each {|i|a.push i.to_i}
  9.       @b = rand(a[2]-a[1]+1)
  10.       return @animation1_id if a.size < 5
  11.       return a[1]+@b
  12.     end
  13.     def animation2_id
  14.       a = []
  15.       @name.split(/,/).each {|i|a.push i.to_i}
  16.       return @animation2_id if a.size < 5
  17.       return a[3]+@b if a[2]-a[1] == a[4]-a[3]
  18.       return rand(a[4]-a[3]+1)+a[3]
  19.     end
  20.   end
  21. 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会在范围随机。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6545
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

3
发表于 2010-10-1 15:51:52 | 只看该作者
Scene_Battle 4 找到
target.animation_id = @animation2_id
改成
target.animation_id = @animation2_id + rand(2)

还可以对 @animation2_id 做一些判断来决定是否要加 rand(2)











你知道得太多了

回复

使用道具 举报

Lv1.梦旅人

剑仙·影羽

梦石
0
星屑
172
在线时间
224 小时
注册时间
2010-3-20
帖子
1580
4
 楼主| 发表于 2010-10-1 21:29:02 | 只看该作者
我想说我想要的是独立的系统…………

点评

最好是数组 操作起来方便  发表于 2010-10-1 23:26
话说这个比较简单。。。你想要什么样的?在一个给定的数组里选一个?还是?  发表于 2010-10-1 21:30

——至今为止,谁也没能分析出他们为什么会因为说了这些话而死。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6545
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

5
发表于 2010-10-1 22:32:08 | 只看该作者
本帖最后由 后知后觉 于 2010-10-1 22:40 编辑

成品系统也就那么些行.

  1. module RPG
  2.   class Animation
  3.     def hzhj_rand
  4.       if @hzhj_rand.nil?
  5.         if (/([0-9]+)/).match(@name) != nil
  6.           @name.sub(/([0-9]+)/){ @hzhj_rand = $1.to_i.abs }
  7.         else
  8.           @hzhj_rand = 0
  9.         end
  10.       end
  11.       return @hzhj_rand
  12.     end
  13.   end
  14.   class Sprite < ::Sprite
  15.     if not methods.include?("hzhj_rand_animation")
  16.       alias hzhj_rand_animation animation
  17.     end
  18.     def animation(*args)
  19.       if args[0] != nil
  20.         if args[0].hzhj_rand > 0
  21.           result_id = args[0].id + rand(args[0].hzhj_rand)
  22.           args[0] = $data_animations[result_id]
  23.         end
  24.       end
  25.       hzhj_rand_animation(*args)
  26.     end
  27.   end
  28. end
复制代码
你是有脚本基础的.那么我就说一下这段代码的原理吧.
首先是给 数据库-动画 增加了一个只读的属性 hzhj_rand
这个属性的设置方法为在动画的名字里写入一个 整数.
就现在的正则表达式来看.只要你的动画名字里出现了 数字.
那么就认为你设置了这个属性.
取的是动画名字里的第一个整数.
如果动画名字里没有设置这个属性.那么就默认为 0.

然后重定义了一下.RPG::Sprite 类的 播放动画的方法.
在播放动画前增加了对该动画的 hzhj_rand 属性的判断.
如果该属性大于0.
那么就计算出 目前动画ID + rand(hzhj_rand)
然后将计算出来的动画替换掉原来的动画进行播放.

举例:
比如 数据库第 50 号动画的名字叫 "火焰 3“
那么在播放这个 50 号动画的时候
就是在播放 50 + rand(3) 号动画(50/51/52中的一个).

有一个小小的不足就是.
当这样的动画被应用到全体技能的时候.
播放该动画的对象可能不统一.

直接改 Scene 的话那冲突就猛增了.
像这样改.冲突会小很多.











你知道得太多了

回复

使用道具 举报

Lv1.梦旅人

剑仙·影羽

梦石
0
星屑
172
在线时间
224 小时
注册时间
2010-3-20
帖子
1580
6
 楼主| 发表于 2010-10-2 08:56:05 | 只看该作者
本帖最后由 火ZHI意志 于 2010-10-2 09:24 编辑

我可能没说清楚 我的原来想法就是事先设置两个数组 分别是两套技能动画动画(包括出招和击中动画都是配好的) …………
也就是说播放一个出招动画后,对应的对象方动画就是和出招动画是事先配好的动画…………
照LS这样做的话会导致混乱的

点评

不过LS的方法我也从中学到了另一样东西 还是感谢一下~  发表于 2010-10-2 09:17
删掉什么定义 我问那个问题开始没有增加过别的定义啊  发表于 2010-10-2 09:11
你难道懒得去删掉原来的定义么?  发表于 2010-10-2 09:04

——至今为止,谁也没能分析出他们为什么会因为说了这些话而死。
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
21 小时
注册时间
2010-9-12
帖子
155
7
发表于 2010-10-2 09:56:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

剑仙·影羽

梦石
0
星屑
172
在线时间
224 小时
注册时间
2010-3-20
帖子
1580
8
 楼主| 发表于 2010-10-2 15:55:44 | 只看该作者
这下对了~ 感谢下~

——至今为止,谁也没能分析出他们为什么会因为说了这些话而死。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 15:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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