Project1

标题: 火枪攻击怎么显示子弹飞行轨迹:超难度问题... [打印本页]

作者: 失去的记忆    时间: 2010-7-4 18:49
标题: 火枪攻击怎么显示子弹飞行轨迹:超难度问题...
大家都知道怎么把默认的工程改为横板战斗吧!(只不过改了角色的坐标而已)!
例如吞食天地的战斗方式: ■ 我方   口 敌人
■                口
■                口
■                口
■                口
我想问的是,当第四名拿火枪攻击敌人一号的时候,怎么能够
先显示“攻击动画—子弹飞行动画—敌人击中动画”呢?
就是在攻击和击中动画中加一个子弹飞行动画....
P: 类似于菜鸟横板中的弓箭攻击,只不过把这个效果单独提取出来了!(不要和我说做2个动画忽略过去,我想知道的是怎么在攻击后移动一个图片或者动画来显示这个效果)
作者: 枫起    时间: 2010-7-4 20:41
用动画功能自己做呗...工作量按照双方的人数来定
作者: kojoy    时间: 2010-7-4 22:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 失去的记忆    时间: 2010-7-5 15:32
回复LS各位,可能是我表达不清:请看图——


我就是想知道这个效果是用脚本则么实现的,看了这个脚本完全看不明白,
还希望高手能够解答下!
作者: shunning88    时间: 2010-7-5 15:42
两点间任意坐标公式 y = kx+b .
代入两个坐标点的x,y.得到k与b.
之后x++,计算y的值.
根据x,y的值显示弓箭图片...
作者: 失去的记忆    时间: 2010-7-5 15:46
....... 回复LS
你的这个方法我知道啊,可是我只是想知道这个原理是怎么实现的而已啊,并不是要这个效果嘛,我在学习,不是为了目的而学习,而是为了技术而学习,搞懂它吧.....
作者: shunning88    时间: 2010-7-5 16:06
那个方法就是原理啊...两点之间的任意坐标的公式.咱们初中的时候学过.
作者: shunning88    时间: 2010-7-5 16:06
{:nm_3:}难道你想证明这个公式~?
作者: 失去的记忆    时间: 2010-7-5 16:33
那么请问 怎么在战斗中任意位置播放动画????? 不然怎么移动?
作者: 水镜风生    时间: 2010-7-5 17:14
非要实现这种效果的话,建议LZ改用RMVX,然后使用Sideview横版战斗系统,可轻易实现战斗者间的动画、图片移动。例如Sideview范例中的投掷武器……
作者: 逸豫    时间: 2010-7-5 17:15
对一个空的Sprite(精灵)播放动画,然后移动这个空的精灵
作者: 失去的记忆    时间: 2010-7-6 07:13
...... 哎.. 所以说我还是想用XP实现这个啊
作者: 失去的记忆    时间: 2010-7-6 09:11
对一个空的Sprite(精灵)播放动画,然后移动这个空的精灵
逸豫 发表于 2010-7-5 17:15

这个方法貌似可行,有空能坐下这个效果的范例吗?我搞不定啊!



作者: 晴.    时间: 2010-7-6 11:23
最佳办法。不要用数据库做动画
其实你的动画也就一针。只是一张图片在移动而已。最后击中的动画分开写就可以了。
用脚本写。人物AB之间坐标判断动画轨迹

作者: 失去的记忆    时间: 2010-7-6 12:15
这个方法貌似可行,有空能坐下这个效果的范例吗?我搞不定啊!
失去的记忆 发表于 2010-7-6 09:11

我知道这个原理啊,而且也试了试,不行啊,这个轨迹很难确定,不信自己试试看!
PS:不要再和我说可以了,我自己试了N次了,不行,还请哪位大大做个范例给我,
就是移动图片也可以!只要是有角色到敌人的攻击轨迹就可以!

作者: 失去的记忆    时间: 2010-7-7 15:50
这么好的帖子别沉了 我顶!!!!!!!!!!!!!:victory:
作者: 逸豫    时间: 2010-7-7 18:49
本帖最后由 逸豫 于 2010-7-7 19:05 编辑
  1. class Scene_Demo
  2.   def main
  3.     @tip = Sprite.new(Viewport.new(0,0,640,480))
  4.     @tip.bitmap = Bitmap.new(12*32,32)
  5.     @tip.bitmap.draw_text(0,0,12*32,32,"这只是精灵移动的演示",1)
  6.     @sprite = Sprite.new(Viewport.new(0,0,640,480))
  7.     @sprite.bitmap = Bitmap.new("Graphics/Battlers/001-Fighter01")
  8.     @start_x = 0
  9.     @start_y = 0
  10.     @sprite.x = @start_x
  11.     @sprite.y = @start_y
  12.     @final_x = 100
  13.     @final_y = 100
  14.     # 执行过渡
  15.     Graphics.transition
  16.     # 主循环
  17.     loop do
  18.       # 刷新游戏画面
  19.       Graphics.update
  20.       # 刷新输入信息
  21.       Input.update
  22.       # 刷新画面
  23.       update
  24.       # 如果切换画面就中断循环
  25.       if $scene != self
  26.         break
  27.       end
  28.     end
  29.     # 准备过渡
  30.     Graphics.freeze
  31.     @tip.dispose
  32.     @sprite.dispose
  33.   end
  34.   def update
  35.     if Input.trigger?(Input::B)
  36.       # 演奏取消 SE
  37.       $game_system.se_play($data_system.cancel_se)
  38.       # 切换的地图画面
  39.       $scene = Scene_Map.new
  40.       return
  41.     end
  42.     if @sprite.x != @final_x  #如果精灵的坐标与最终坐标不相等
  43.       @sprite.x -= 1 if @sprite.x > @final_x
  44.       @sprite.x += 1 if @sprite.x < @final_x
  45.     end
  46.     if @sprite.y != @final_y  #如果精灵的坐标与最终坐标不相等
  47.       @sprite.y -= 1 if @sprite.y > @final_y
  48.       @sprite.y += 1 if @sprite.y < @final_y
  49.     end
  50.   end
  51. end
复制代码
于是,你要的移动图片也可以来了……
  1. class Scene_Demo
  2.   def main
  3.     @tip = Sprite.new(Viewport.new(0,0,640,480))
  4.     @tip.bitmap = Bitmap.new(12*32,32)
  5.     @tip.bitmap.draw_text(0,0,12*32,32,"这只是精灵移动的演示",1)
  6.     @sprite = RPG::Sprite.new(Viewport.new(0,0,640,480))
  7.     #@sprite.bitmap = Bitmap.new("Graphics/Battlers/001-Fighter01")
  8.     @sprite.loop_animation($data_animations[5])
  9.     @start_x = 0
  10.     @start_y = 0
  11.     @sprite.x = @start_x
  12.     @sprite.y = @start_y
  13.     @final_x = 100
  14.     @final_y = 100
  15.     # 执行过渡
  16.     Graphics.transition
  17.     # 主循环
  18.     loop do
  19.       # 刷新游戏画面
  20.       Graphics.update
  21.       # 刷新输入信息
  22.       Input.update
  23.       # 刷新画面
  24.       update
  25.       # 如果切换画面就中断循环
  26.       if $scene != self
  27.         break
  28.       end
  29.     end
  30.     # 准备过渡
  31.     Graphics.freeze
  32.     @tip.dispose
  33.     @sprite.dispose
  34.   end
  35.   def update
  36.     @sprite.update
  37.     if Input.trigger?(Input::B)
  38.       # 演奏取消 SE
  39.       $game_system.se_play($data_system.cancel_se)
  40.       # 切换的地图画面
  41.       $scene = Scene_Map.new
  42.       return
  43.     end
  44.     if @sprite.x != @final_x  #如果精灵的坐标与最终坐标不相等
  45.       @sprite.x -= 1 if @sprite.x > @final_x
  46.       @sprite.x += 1 if @sprite.x < @final_x
  47.     end
  48.     if @sprite.y != @final_y  #如果精灵的坐标与最终坐标不相等
  49.       @sprite.y -= 1 if @sprite.y > @final_y
  50.       @sprite.y += 1 if @sprite.y < @final_y
  51.     end
  52.     if @sprite.x == @final_x && @sprite.y == @final_y
  53.       @sprite.loop_animation(nil)
  54.     end
  55.   end
  56. end
  57.       
复制代码
这是特别有爱的动画版……




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