Project1

标题: 横版战斗效果 [打印本页]

作者: 新的寂静    时间: 2010-7-4 01:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: 村纱水蜜    时间: 2010-7-4 01:49
如果只要这种效果的话可以不用从菜鸟横版里提取的呀,用默认素材就可以完成哦~
要做的工作就是把默认库里的“铳”动画改成横向的就好了(不知道LZ是不是这个意思?)
动画的每一帧都是可以选择角度的,所以LZ只需要在默认库的“铳”动画里双击相应的单元,在“旋转角度”里填上90度,子弹就能变成横向的啦~接下来用类似的方法设置每一帧子弹的位置和打中的效果就好了~
不知道私理解的对不对,嘻嘻..
作者: moy    时间: 2010-7-4 02:26
嘛,不过横板战斗有一个不好的地方就是,攻击开始的时候没办法准确到目标.比如你站的位置和对面的不是一排....就会很悲剧的发现子弹就像转了个弯一样...从一条线突然蹦到另一条线...
作者: 新的寂静    时间: 2010-7-4 03:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: moy    时间: 2010-7-4 05:05
本帖最后由 moy 于 2010-7-4 05:06 编辑

看效果的话,似乎是直接读取了角色的中心点和对象的中心点,然后就这么让动画移动过去的样子......脚本不太会,不知道具体应该怎么改.
本来倒是想看看的....结果自己找了找就几乎把整个脚本挪出来了=. =果然是实力不够看什么都要啊...
不过核心思想应该在这一段:

  1.   #--------------------------------------------------------------------------
  2.   # ● 遠距離アニメ目標座標の計算
  3.   #--------------------------------------------------------------------------
  4.   def flying_setup
  5.     # 二度目は実行しない
  6.     return if @flying_distance != nil && !camera_correctness
  7.     if RTAB
  8.       targets = @target
  9.     else
  10.       targets = $scene.target_battlers
  11.     end
  12.     # 目的座標を計算
  13.     @f_target_x = 0
  14.     @f_target_y = 0
  15.     for t in targets
  16.       @f_target_x += t.screen_x
  17.       @f_target_y += t.screen_y
  18.     end
  19.     if targets != []
  20.       @f_target_x /= targets.size
  21.       @f_target_y /= targets.size
  22.     else
  23.       @flying_distance = 0
  24.       return
  25.     end
  26.     # 距離の計算
  27.     @flying_distance = (self.screen_x - @f_target_x).abs + (self.screen_y - @f_target_y).abs
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 遠距離アニメ
  31.   #--------------------------------------------------------------------------
  32.   def flying_animation
  33.     # 戻る
  34.     if @step != "flying" or @flying_distance.nil?
  35.       return [false,true]
  36.     end
  37.     # あらかじめ計算
  38.     self_x = self.screen_x
  39.     self_y = self.screen_y
  40.     @flying_distance = @flying_distance == 0 ? 1 : @flying_distance
  41.     n1 = @flying_wait / @flying_distance.to_f
  42.     if @flying_distance - @flying_wait > @flying_distance / 2
  43.       n2 = 1.0 + 10.0 * @flying_wait / @flying_distance.to_f
  44.     else
  45.       n2 = 1.0 + 10.0 * (@flying_distance - @flying_wait) / @flying_distance.to_f
  46.     end
  47.     if !@flying_anime[4]
  48.       # 直線移動
  49.       x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
  50.       y = (self_y + 1.0 * (@f_target_y - self_y) * n1).to_i
  51.     else
  52.       # 曲線移動
  53.       if !@flying_proceed_end
  54.         x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
  55.         y = (self_y + 1.0 * (@f_target_y - self_y) * n1 - n2**2).to_i
  56.       else
  57.         x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
  58.         y = (self_y + 1.0 * (@f_target_y - self_y) * n1 + n2**2).to_i
  59.       end
  60.     end
  61.     # 座標代入
  62.     @flying_x = x
  63.     @flying_y = y
  64.     # ウエイト
  65.     if !@flying_proceed_end
  66.       # 開始
  67.       @flying_proceed_start = @flying_wait == 0
  68.       @flying_wait += @flying_anime[1]
  69.       @flying_wait = [@flying_wait,@flying_distance].min
  70.       @flying_proceed_end = @flying_wait == @flying_distance
  71.     else
  72.       # 開始
  73.       @flying_return_start = @flying_wait == @flying_distance
  74.       @flying_wait -= @flying_anime[1]
  75.       @flying_wait = [@flying_wait,0].max
  76.       @flying_return_end = @flying_wait == 0
  77.     end
  78.     if @flying_anime[1] == 0
  79.       @flying_end = true
  80.     elsif !@flying_anime[2]
  81.       @flying_end = @flying_proceed_end
  82.     else
  83.       @flying_end = @flying_return_end
  84.     end
  85.     # 値を返す(アニメ開始,アニメ終了)
  86.     return [@flying_proceed_start,@flying_end]
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 遠距離アニメ初期化
  90.   #--------------------------------------------------------------------------
  91.   def flying_clear
  92.     @flying_proceed_start = false
  93.     @flying_proceed_end = false
  94.     @flying_return_start = false
  95.     @flying_return_end = false
  96.     @flying_end = false
  97.     @flying_anime = [0,0,false]
  98.   end
复制代码





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