Project1

标题: 无缝特效 [打印本页]

作者: 89444640    时间: 2017-2-24 10:28
标题: 无缝特效
本帖最后由 89444640 于 2017-3-4 14:42 编辑

全屏动画相关脚本链接https://rpg.blue/forum.php?mod=viewthread&tid=399194
15楼为640*384的RMXP专用全屏动画脚本,简单易用无冲突,可以避免分割192动画造成的拼接难度高而且可能有一个像素的接缝问题,范例展示的是全屏播放的使用方式与使用效果,其中的素材目前禁止其他任何商业非商业工程使用,禁止修改,若让我看到mugen什么的里面出现了我不想看到的修改版,我会追究到底。
这个是刚才用这种方法做的全屏特效预览图。站在固定位置全屏散射追踪光柱。

需要整合好角色所在的位置,就是说把每个帧数该显示的东西,在ps中全调节好。依然可以使用不停图块叠加,但是无法直观显示,只能依靠计算了。
但是比一个一个拼碎块效率高多了,而且ps中调节比在rm中调节动画要容易,因为可以放大rm动画窗口不但不放大还缩放,细节看不清啊。

也一起解决了全动画脚本,敌人死亡时消失问题
提问帖如下
https://rpg.blue/forum.php?mod=v ... amp;_dsign=5d6edba5
问题解决在20楼的附件
脚本修改了哪里请见21楼
中间层soulsaga与guoxiaomi提出的是各种分析与解决方案。
只需要看此脚本文件中的“全动画战斗最终版本”,其他脚本与此无关,请无视。



这帖子本来是想问问怎么弄弄无缝特效来着跑题了


那个大家都知道,诸如水流火焰雷电云彩头发循环什么什么巴拉巴拉的,除了像素或者手绘干画之外,都有能用粒子类软件 pi3 AE什么的专门软件可以做出来
当然如果高级的粒子系统可以在游戏中运行这个也可以,不过一般rm即使用到例子,也远远无法达到能用这个系统合成魔法特效的程度。

如果手绘,至少像素我画过,思路是这样的,让第一帧与最后一帧的过渡看上去比较自然即可。就是说按照动画手绘凤方式,无论火焰、烟雾、水花之类的流体,还是头发,衣服之类的固态体,都按照自然的摆动规律绘制就可以了- -b,
手绘雪花树叶之类的飘动就是这样,先确定画面中飘动雪花的运动规律,然后画出其运动路径,按照近景快速通过,远景慢速通过的规律,就能画出来……
不过总的来说手绘不但,效率低下,而且难度也不算低吧,而且光影感,也就是那种让人眼前一亮的感觉很少,因为手绘太自然了,而特效是那种“强迫你看这里”的感觉,
要命鸡要命在攻击特效动画还就需要这种感觉--b

举例,雨林地图用pi3默认粒子做的简单水花模拟效果。

制作时间这个分分钟的事,16帧都不到,但是边上一个连玩家都算不上的普通人看到了,第一眼是盯着这个水花说,这个做的真好,完全无视了场景的绘制耗时、难度比这个水花要难几十倍。

但是这就又碰到了循环问题,一般特效制作者,在一些要求不那么严的循环特效上,都会使用淡入淡出来糊弄过去这个动画,但是真的要好好制作无缝循环,应该怎么弄呢?

专业软件的,单位破机子跑不起来,完全没有制作时间了。只能求一下pi3的无缝循环,非明灭变化制作方式。
还请会的人不惜赐教。

那啥
补充一下严正声明
首先我们都错了
粒子风暴3这软件不是免费的
这个是官网
http://www.wondertouch.com/index_2.asp

这有个tw翻译版网页
http://www.digivision.com.tw/pillusion/
我们用的都是盗版ORZ,还真以为这么好用的软件是免费的了ORZZZ

pi3 TW售价17,500NT 等于3919.3729元
官网售价389美元 等于2670.2905人民币元
还行……能接受,跟我正版64位 WIN7差不多

photoshop我用的7.01早期版本 若是新版本还真买着够我呛

您要系统都不是正版的,我也什么都不说了


如果是官方的,购买地址在这里
http://www.wondertouch.com/index_2.asp
chick here to buy
然后如果是买了,那就当然可以商用了。
所以只要是没买…………咱们现在用的都是盗版ORZ
所有使用pi3制作的特效,如果没买软件,那就都是盗版而且自己还不知道orz

保险起见,等有富裕钱了我也买个吧。
这么多年都不知道,实在对不起人家

然后其他诸如AE6.5 ps公司的p什么视频剪辑软件,请自备正版。
作者: yang1zhi    时间: 2017-2-24 12:25
我不知道粒子系统软件。能介绍下吗
作者: 89444640    时间: 2017-2-24 15:45
本帖最后由 89444640 于 2017-2-24 16:16 编辑
yang1zhi 发表于 2017-2-24 12:25
我不知道粒子系统软件。能介绍下吗


https://rpg.blue/forum.php?mod=v ... amp;_dsign=3e1400d8这里有详细的介绍,属于平民特效软件,操作方便。
其他的应该还有不少,比如after effert 我记得好像是用过6.5
好几年前了吗,操作起来较为麻烦,看着教程弄特效,而且还需要和好几个视频制作软件一起学,最关键的问题是那个输出AVI方便,但是当年xp的AVI播放器我这机子一直就用不了,于是就没继续学。现在估计忘光了。

然后那个……顺道问一下 rmxp是不是动画最多支持的长度是刀单元342,也就是342/5 长度69行,69*192的高度
我这弄了个长的结果后面不给我显示了。
还是说我单位这个破机子内存不够显示不出来后面的?
刚才用数字干打吧后面的拼出来了,果然是单位电脑破。

继续说RMXP中自可以嵌入的粒子系统,我记得有人做过rmxp的粒子系统,就是那种随飘雪花的,用一张或者几张图片作为种子,随机播放大小与旋转,
因为66rpg论坛当年三天两头寻找自我,没事就丢各种好的教程与参考,若果没记错我旧硬盘上有存过这个。
但是这个冲突很大,影响我游戏正常运行。
似乎还有人吓出来过rmxp的各种滤镜,也是冲突大不上。
啊对,还有个做手机游戏的网友,专业手机游戏程序员,兼2D 3d美工,当初天天捣鼓各种稀奇古怪系统,一会3D 一会粒子系统特效 一会开发引擎 一会画像素的,挖几十个大坑坑不填,估计现在结婚不知哪里去了。

所以现在只能用平民软件制作特效了。
自从2012年以PI3后这个软件官方例子库就没更新过,不知道是不是全改成商业了。
官方自带的效果就很好用,稍加修改就能做出简单特效,如果不是专业特效师或者本身就影视特效专业或者有相关经验的来做rm游戏,用pi3还是比较好的选择。
比如这种简单特效,雷光球嘛~

当年kof二阶的雷光拳不就这样~我只要画个人物动作就好~
如果不作为魔法使用,没必要那么多帧,只需要光球有个较大幅度的变化即可。

作者: Im剑侠客    时间: 2017-2-24 22:12
89444640 发表于 2017-2-24 15:45  https://rpg.blue/forum.php?mod=viewthread&tid=193868&extra=&page=1&_dsign=3e1400d8这里有详细的 ...

我来回答一下动画长度的问题吧,太长了在动画编辑器是看不到的,但是还是可以继续添加,只要你知道下一帧是什么。(讲真以优化角度来讲,不建议喔。)
作者: 89444640    时间: 2017-2-25 09:24
本帖最后由 89444640 于 2017-2-25 09:27 编辑
Im剑侠客 发表于 2017-2-24 22:12
我来回答一下动画长度的问题吧,太长了在动画编辑器是看不到的,但是还是可以继续添加,只要你知道下一帧 ...


原来如此,
昨天按照图像出现规律,直接改帧数吧后面的弄出来了,运行起来果然卡一下,不过还算能接受,因为昨天是传送类的光效,卡就卡一下吧。
看来再做,就算抽帧减少流畅度,动画也尽量不能超过349个单元。

但是若为了不缩放,只能用4或者6个192格拼一张动画,若能支持640*384单帧大小的动画就好了。
因为战斗动画不改界面以前,除去下面设定成必定在最上方显示的96高的菜单界面,这个大小就等于是全屏播放了。
有什么方法可是设置多种动画素材格式吗?比如如上所示,单帧640*384,素材垂直排列。
有人提到过可以用单帧图片显示代替动画,但是这个方法会存在pic文件夹下图像过乱过多的问题,而且立绘什么的额全在这下面,每次找都会头疼。
若是用脚本调用某文件夹下的,不知道会不会又出现诸如扣血显示异常的问题。

毕竟是老制作软件,这种地方设置还是不很完善的,估计制作公司也没考虑到大家放群体攻击魔法什么的时候喜欢用全屏动画这事。
192*192 缩放完了全屏马赛克啊T T虽然人物是像素,除了像素绘制的特效,
软件制作的特效看马赛克很纠结啊。

作者: soulsaga    时间: 2017-2-25 12:37
本帖最后由 soulsaga 于 2017-2-25 14:18 编辑

脚本搜sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)

这个可以改变读取动画精灵的矩形..你可以研究下怎么改..
前面两组是读取的单元XY坐标..后面两组是矩形的大小..pattern可能是单元数值..

测试过后只能改成这样..sprite.src_rect.set(pattern % 1 * 192, pattern / 5 * 192, 640, 384)
建议单帧用640X384大小的..然后在动画编辑器用每个单元左上的精灵做动画就行..
作者: 89444640    时间: 2017-2-26 09:17
soulsaga 发表于 2017-2-25 12:37
脚本搜sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)

这个可以改变读取动画精灵 ...

好好画草图来着,休息会上来一看好多提醒- -用帧1*5n的方法会影响192标准动画播放,有办法部分动画可选可选择是否用此方法播放吗?
作者: guoxiaomi    时间: 2017-2-26 10:35
soulsaga 发表于 2017-2-25 12:37
脚本搜sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)

这个可以改变读取动画精灵 ...

找了一下,这个是RPG::Sprite下的animation_set_sprites方法,我把方法拉出来,做了注释,看看能不能有点启发。这个方法也是正常脚本不会修改的。
怎么简单的把信息传进这个方法,好像也是个难题。
RUBY 代码复制
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     def animation_set_sprites(sprites, cell_data, position)
  4.       # 这 16 个点是动画上的单元数,最多 16 个,然后每个进行处理
  5.       for i in 0..15
  6.         sprite = sprites[i]
  7.         # cell_data[i, 0] 是该单元的图片在动画图片中的位置
  8.         pattern = cell_data[i, 0]
  9.         # 如果 patten = -1, or nil,本帧画面上不显示,处理下一个单元
  10.         # 如果 sprite == nil,处理下一个单元
  11.         if sprite == nil or pattern == nil or pattern == -1
  12.           sprite.visible = false if sprite != nil
  13.           next
  14.         end        
  15.         sprite.visible = true
  16.         # 这里找到该单元的图片在动画图片中的位置和大小
  17.         sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  18.         # 位置:画面的情况
  19.         if position == 3
  20.           # 无论是战斗中还是地图上,尚未发现self.viewport为nil的情况  
  21.           # self 是显示动画的 Sprite
  22.           if self.viewport != nil
  23.             # viewport存在,x 为viewport中心,y 为viewport高 - 160
  24.             sprite.x = self.viewport.rect.width / 2
  25.             sprite.y = self.viewport.rect.height - 160
  26.           else
  27.             # viewport不存在,中心设于游戏窗口中心(标准640*480)
  28.             sprite.x = 320
  29.             sprite.y = 240
  30.           end
  31.         else
  32.           # 位置:上中下的情况
  33.           # 中的情况,图片中心位置和显示动画的 Sprite中心重合
  34.           sprite.x = self.x - self.ox + self.src_rect.width / 2
  35.           sprite.y = self.y - self.oy + self.src_rect.height / 2
  36.           # 上的情况,图片上移自身 1/4 的高度
  37.           sprite.y -= self.src_rect.height / 4 if position == 0
  38.           # 下的情况,图片下移自身 1/4 的高度
  39.           sprite.y += self.src_rect.height / 4 if position == 2
  40.         end
  41.         # cell_data[i, 1] 是该单元的图片的
  42.         sprite.x += cell_data[i, 1] # x 偏移量
  43.         sprite.y += cell_data[i, 2] # y 偏移量
  44.         sprite.z = 2000 # 高度
  45.         sprite.ox = 96 # 图片的 中心 位置 x
  46.         sprite.oy = 96 # 图片的 中心 位置 y,中心位置要和画面的中心位置重合
  47.         sprite.zoom_x = cell_data[i, 3] / 100.0 # x 放大率
  48.         sprite.zoom_y = cell_data[i, 3] / 100.0 # y 放大率
  49.         sprite.angle = cell_data[i, 4] # 旋转
  50.         sprite.mirror = (cell_data[i, 5] == 1) # 镜像
  51.         sprite.opacity = cell_data[i, 6] * self.opacity / 255.0 # 透明度
  52.         sprite.blend_type = cell_data[i, 7] # 混合方式
  53.       end
  54.     end
  55.   end
  56. end

作者: soulsaga    时间: 2017-2-26 16:56
89444640 发表于 2017-2-26 09:17
好好画草图来着,休息会上来一看好多提醒- -用帧1*5n的方法会影响192标准动画播放,有办法部分动画可选可 ...

我虽然加了个动画文件名的判断..但是同时播放的动画也会受到影响..无解啊..
作者: 89444640    时间: 2017-2-26 17:42
soulsaga 发表于 2017-2-26 16:56
我虽然加了个动画文件名的判断..但是同时播放的动画也会受到影响..无解啊.. ...

表达一下心情。

人物不是我画的
作者: soulsaga    时间: 2017-2-26 18:32
本帖最后由 soulsaga 于 2017-3-1 19:26 编辑
soulsaga 发表于 2017-2-26 16:56
我虽然加了个动画文件名的判断..但是同时播放的动画也会受到影响..无解啊.. ...


    脚本搜def animation(animation, hit)
方法下面插个
$game_variables[82] = animation.animation_name

脚本搜def loop_animation(animation)
下面sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)改成下面的
$game_variables[82] = @_loop_animation.animation_name
sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)改成
        if $game_variables[82].to_s[/动画/] == "动画"
        sprite.src_rect.set(pattern % 1 * 192, pattern / 5 * 192, 640, 384)
        else
        sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
        end


作者: soulsaga    时间: 2017-3-1 15:27
你还有什么未解決的..快找大神看看有没空帮你搞定..
作者: 89444640    时间: 2017-3-1 19:04
本帖最后由 89444640 于 2017-3-1 19:37 编辑
soulsaga 发表于 2017-3-1 15:27
你还有什么未解決的..快找大神看看有没空帮你搞定..


非常感谢,每次都热心帮助。
https://rpg.blue/forum.php?mod=viewthread&tid=398767
敌人消失时间的问题
全动画战斗脚本动画播放是出手动画与对象方动画同时播放
需要的是两个动画都播放完成后,以时间长的动画为标准,敌人才开始判定消失,就用这个帖子的脚本测试就可以。

Scripts.rar (198.52 KB, 下载次数: 38)
作者: soulsaga    时间: 2017-3-1 20:24
本帖最后由 soulsaga 于 2017-3-2 09:36 编辑

Scripts.zip (191.68 KB, 下载次数: 36)
没法测试不知道行不行得通..
要两个动画啊..这样应该不行..

我再改了一下..上传脚本给你测测看...
作者: guoxiaomi    时间: 2017-3-1 22:27
本帖最后由 guoxiaomi 于 2017-3-2 01:12 编辑

如我前面所说,修改了 RPG::Sprite 的 animation_set_sprites(sprites, cell_data, position) 方法:
RUBY 代码复制
  1. #==============================================================================
  2. # 全图动画 (突破动画 192 * 192 限制)
  3. #==============================================================================
  4. # 用法:
  5. # 1. 动画图片设置:
  6. #    1.1 宽度 640
  7. #    1.2 所有的子图片竖着排列
  8. #    1.3 图片名包含 ★全图320★ 这里 320 是单张高度值
  9. #    1.4 图片名包含 ★全图320YS160★ 则播放的动画会向下移动 160 像素
  10. # 2. 数据库动画设置
  11. #    2.1 选择一帧,添加一个单元
  12. #    2.2 位置:上 在正常动画上方(z=3000);
  13. #        位置:中 在正常动画下方(z=1500)
  14. #        位置:下 在敌人下方(z=0);
  15. #        位置:画面 z = x 坐标* y 坐标 * 放大率
  16. #    2.3 式样:此帧播放的子图片位置
  17. #    2.4 左右反转、不透明度和合成方式可以正常使用
  18. #    2.5 X坐标、Y坐标、放大率、旋转角度不可以正常使用
  19. #==============================================================================
  20. # 作者:guoxiaomi 脚本来自 rpg.blue
  21. #==============================================================================
  22.  
  23. module RPG
  24.   class Sprite < ::Sprite
  25.     def animation_set_sprites(sprites, cell_data, position)
  26.       # --------------------------------------------------------
  27.       # 图片文件名里包含★全图320★
  28.       # --------------------------------------------------------
  29.       if @_animation && @_animation.animation_name =~ /★全图(\d+).*★/
  30.         full_screen = true
  31.         width = 640
  32.         height = $1.to_i
  33.         y_shift = 0
  34.         if @_animation.animation_name =~ /★全图\d+YS(\d+)★/
  35.           y_shift = $1.to_i
  36.         end
  37.       else
  38.         full_screen = false
  39.       end
  40.       # --------------------------------------------------------
  41.       # 这 16 个点是动画上的单元数,最多 16 个,然后每个进行处理
  42.       for i in 0..15
  43.         sprite = sprites[i]
  44.         # cell_data[i, 0] 是该单元的图片在动画图片中的位置
  45.         pattern = cell_data[i, 0]
  46.         # 如果 patten = -1, or nil,本帧画面上不显示,处理下一个单元
  47.         # 如果 sprite == nil,处理下一个单元
  48.         if sprite == nil or pattern == nil or pattern == -1
  49.           sprite.visible = false if sprite != nil
  50.           next
  51.         end        
  52.         sprite.visible = true
  53.  
  54.         if full_screen
  55.           # --------------------------------------------------------
  56.           # 全图的情况
  57.           # --------------------------------------------------------
  58.           sprite.src_rect.set(0, pattern * height, width, height)
  59.           sprite.x = width / 2
  60.           sprite.y = height / 2 + y_shift
  61.           sprite.ox = 320
  62.           sprite.oy = height / 2
  63.           # 高度:位置为 上中下高度分别是 3000/1500/0(敌人背后)
  64.           # 位置为 画面 时,高度为 x 坐标* y 坐标 * 放大率
  65.           case position
  66.           when 0
  67.             sprite.z = 3000 # 普通动画上方
  68.           when 1
  69.             sprite.z = 1500 # 普通动画下方
  70.           when 2
  71.             sprite.z = 0 # 敌人下方
  72.           when 3
  73.             sprite.z = cell_data[i, 1] * cell_data[i, 2] * cell_data[i, 3] # 自定义高度
  74.           end
  75.           sprite.mirror = (cell_data[i, 5] == 1) # 镜像
  76.           sprite.opacity = cell_data[i, 6] * self.opacity / 255.0 # 透明度
  77.           sprite.blend_type = cell_data[i, 7] # 混合方式
  78.         else
  79.           # --------------------------------------------------------
  80.           # 正常的情况
  81.           # --------------------------------------------------------
  82.           # 这里找到该单元的图片在动画图片中的位置和大小                  
  83.           sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)                  
  84.           # 位置:画面的情况
  85.           if position == 3
  86.             # 无论是战斗中还是地图上,尚未发现self.viewport为nil的情况  
  87.             # self 是显示动画的 Sprite
  88.             if self.viewport != nil
  89.               # viewport存在,x 为viewport中心,y 为viewport高 - 160
  90.               sprite.x = self.viewport.rect.width / 2
  91.               sprite.y = self.viewport.rect.height - 160
  92.             else
  93.               # viewport不存在,中心设于游戏窗口中心(标准640*480)
  94.               sprite.x = 320
  95.               sprite.y = 240
  96.             end
  97.           else
  98.             # 位置:上中下的情况
  99.             # 中的情况,图片中心位置和显示动画的 Sprite中心重合
  100.             sprite.x = self.x - self.ox + self.src_rect.width / 2
  101.             sprite.y = self.y - self.oy + self.src_rect.height / 2
  102.             # 上的情况,图片上移自身 1/4 的高度
  103.             sprite.y -= self.src_rect.height / 4 if position == 0
  104.             # 下的情况,图片下移自身 1/4 的高度
  105.             sprite.y += self.src_rect.height / 4 if position == 2
  106.           end
  107.           # cell_data[i, 1] 是该单元的图片的
  108.           sprite.x += cell_data[i, 1] # x 偏移量
  109.           sprite.y += cell_data[i, 2] # y 偏移量
  110.           sprite.z = 2000 # 高度
  111.           sprite.ox = 96 # 图片的 中心 位置 x
  112.           sprite.oy = 96 # 图片的 中心 位置 y,中心位置要和画面的中心位置重合
  113.           sprite.zoom_x = cell_data[i, 3] / 100.0 # x 放大率
  114.           sprite.zoom_y = cell_data[i, 3] / 100.0 # y 放大率
  115.           sprite.angle = cell_data[i, 4] # 旋转
  116.           sprite.mirror = (cell_data[i, 5] == 1) # 镜像
  117.           sprite.opacity = cell_data[i, 6] * self.opacity / 255.0 # 透明度
  118.           sprite.blend_type = cell_data[i, 7] # 混合方式
  119.         end
  120.       end
  121.     end
  122.   end
  123. end
  124. #==============================================================================
  125. # 作者:guoxiaomi 脚本来自 rpg.blue
  126. #==============================================================================

作者: 89444640    时间: 2017-3-2 00:08
本帖最后由 89444640 于 2017-3-2 00:19 编辑
guoxiaomi 发表于 2017-3-1 22:27
如我前面所说,修改了 RPG::Sprite 的 animation_set_sprites(sprites, cell_data, position) 方法:
#==== ...

首先 是在main前插入脚本没错吧- -b
素材我看明白了 垂直排列每张640*320
然后,……我怎么用?导入到pic文件夹下还是动画文件夹下?
公用事件调用?
请用这个做个范例吧。实在是不明白怎么用。
全屏动画01★全图320★.rar (193.59 KB, 下载次数: 42)

那个16个单元数怎么回事?最多只能16个单元的全屏动画?
1.4 图片名包含 ★全图320YS160★ 则播放的动画会向下移动 160 像素
这个的作用是什么,不是左上角为基准位置显示640*320的就是全屏了吗?不理解向下移动160像素作用是什么--b
作者: guoxiaomi    时间: 2017-3-2 00:51
本帖最后由 guoxiaomi 于 2017-3-2 01:34 编辑

脚本插在main前的任何地方应该都可以

这个脚本的作用是识别动画文件的名称,如果是特定的名称就不用192x192的模式。所以导入到动画文件夹下。

调用方法就是普通的调用方法,动画制作好了之后,事件调用,或者设置为技能绑定的动画。

范例已上传。

16个单元是指,RM默认的动画,是把一个素材图分成192x192的很多份,把每一份称为子素材。每一帧最多添加 16 个单元,每个单元就是原来192x192的子素材的平移、旋转和缩放等。但是全图动画不能独立设置多个单元的位置,多个单元是重叠在相同位置。

关于向下移动若干像素的作用,我添加了另一个黑色的三角形图片,你一看就知道可能用在哪里。

实际上这是基于默认系统的脚本,我并不知道全动画脚本怎么调用动画。如果全动画脚本的技能调用动画和默认系统一样,就是播放数据库里设置好的动画,那就没问题。

此外,尽管每个单元的位置都是相同的,但是每帧依旧可以使用多个单元,设置为半透明叠在一起制造出类似残影的效果。

全图动画.zip

592.54 KB, 下载次数: 78


作者: 89444640    时间: 2017-3-2 01:39
guoxiaomi 发表于 2017-3-2 00:51
这个脚本的作用是识别动画文件的名称,如果是特定的名称就不用192x192的模式。所以导入到动画文件夹下。

...

非常感謝大半夜的還……怎麼又繁體中文了 ……大半夜的还帮我做范例。黑色三角形做特写用?没用过这类显示方式,动画调用可以按照平时的习惯拼了,只要记住每一帧显示的是什么。
这样可以轻松的做和敌人对招的动画了。ps里面直接调好就行。
这个效果似乎不适合高清大型人物使用,我试了一下非常别扭,视觉效果问题,估计只适合放全屏魔法和人物招式特写用。
常规显示方式试速度线+半身像,不过每一帧都要预先调节好特效,使用原来的叠加方式会较为困难。
不过似乎这个也能做过长动画用,只不过是200帧为基准,分段播放了。我怎么又卓me哦这么蛋疼的用法……

作者: guoxiaomi    时间: 2017-3-2 01:58
本帖最后由 guoxiaomi 于 2017-3-2 02:06 编辑
89444640 发表于 2017-3-2 01:39
非常感謝大半夜的還……怎麼又繁體中文了 ……大半夜的还帮我做范例。黑色三角形做特写用?没用过这类显 ...


提醒一下,默认的战斗系统,如果是角色身上的动画,比如作为技能使用者的使用方动画和作为技能目标的目标动画。是会覆盖下面的战斗框。如果是敌人身上的动画则不会。

这似乎是Viewport相互遮挡的问题,所以如果想在战斗中显示640x480的动画,就要在角色身上显示。
作者: soulsaga    时间: 2017-3-3 15:08
89444640 发表于 2017-3-2 01:39
非常感謝大半夜的還……怎麼又繁體中文了 ……大半夜的还帮我做范例。黑色三角形做特写用?没用过这类显 ...


这次我真的改好了..也测试过了..
原来你打敌人是算敌人动作那的.. Scripts.rxdata (191.91 KB, 下载次数: 31)
应该会播放完动画才死亡了..

作者: soulsaga    时间: 2017-3-4 14:20
89444640 发表于 2017-3-2 01:39
非常感謝大半夜的還……怎麼又繁體中文了 ……大半夜的还帮我做范例。黑色三角形做特写用?没用过这类显 ...


全动画战斗最终版本脚本
初始化变量initialize方法下面插个
fanime_frame_max = 0

#buff之外的技能往下第9行# 添加施法动画下面
插一行$fanime_frame_max = $data_animations[@animation1_id].frame_max
RUBY 代码复制
  1. # ● 处理角色动作
  2.   #--------------------------------------------------------------------------
  3.   def update_actor_animation
  4.     if @battler.is_a?(Game_Actor)
  5.       if @battler.show_damage_value != nil
  6.         self.damage(@battler.show_damage_value, false)
  7.         @battler.show_damage(nil)
  8.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  9.         @battler.setup_battler_hurt_ani(1)
  10.       end
  11.       @last_frame = $fanime_frame_max if $fanime_frame_max > @last_frame

跟着下面的角色死亡判定改成这样
RUBY 代码复制
  1. # 死亡判定
  2.  
  3.         elsif @frame_index == @last_frame and @battler.dead? and @battler.battler_dead_ani != 1


然后# ● 处理敌人动作也是同一样的改法...



作者: 89444640    时间: 2017-3-4 14:35
soulsaga 发表于 2017-3-4 14:20
全动画战斗最终版本脚本
初始化变量initialize方法下面插个
fanime_frame_max = 0

原来如此~非常感谢~
终于能看到当年画的c&c3中神像火炮的全部威力了XD,以前都是播放1X帧后就消失了ORZ

话说应该这个也在技术区单独立个帖子,全动画战斗修正到现在这个程度,基本上除了偶尔有遮挡异常的的顽固疾病,已经很完美了。
作者: soulsaga    时间: 2017-3-4 14:49
https://twitter.com/ohgaki_m/media
作者: soulsaga    时间: 2017-3-4 15:34
89444640 发表于 2017-3-4 14:35
原来如此~非常感谢~
终于能看到当年画的c&c3中神像火炮的全部威力了XD,以前都是播放1X帧后就消失了ORZ

代LZ上传动图..

0111.gif (3.4 MB, 下载次数: 31)

0111.gif

作者: soulsaga    时间: 2017-3-13 14:43
本帖最后由 soulsaga 于 2017-3-13 14:45 编辑

i.imgur.com/rscUlwx.gif
最近无聊搞的东西..由於儿童不宜..所以只放连接..
作者: 花天酒地    时间: 2017-7-3 18:25
soulsaga 发表于 2017-3-4 15:34
代LZ上传动图..

有范烈吗 这个动画不错
作者: 花天酒地    时间: 2017-7-12 03:08
guoxiaomi 发表于 2017-3-2 00:51
脚本插在main前的任何地方应该都可以

这个脚本的作用是识别动画文件的名称,如果是特定的名称就不 ...

全动画素材素材长和宽还是理解,宽度最多是690像素X高度1920像素吗
作者: guoxiaomi    时间: 2017-7-12 13:09
花天酒地 发表于 2017-7-12 03:08
全动画素材素材长和宽还是理解,宽度最多是690像素X高度1920像素吗

看15楼脚本的注释。
默认的动画是每行 5 个单元的。但是这里要求,每行 1 个单元,所有的单元纵向排列。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1