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 编辑
看效果的话,似乎是直接读取了角色的中心点和对象的中心点,然后就这么让动画移动过去的样子......脚本不太会,不知道具体应该怎么改.
本来倒是想看看的....结果自己找了找就几乎把整个脚本挪出来了=. =果然是实力不够看什么都要啊...
不过核心思想应该在这一段:
#--------------------------------------------------------------------------
# ● 遠距離アニメ目標座標の計算
#--------------------------------------------------------------------------
def flying_setup
# 二度目は実行しない
return if @flying_distance != nil && !camera_correctness
if RTAB
targets = @target
else
targets = $scene.target_battlers
end
# 目的座標を計算
@f_target_x = 0
@f_target_y = 0
for t in targets
@f_target_x += t.screen_x
@f_target_y += t.screen_y
end
if targets != []
@f_target_x /= targets.size
@f_target_y /= targets.size
else
@flying_distance = 0
return
end
# 距離の計算
@flying_distance = (self.screen_x - @f_target_x).abs + (self.screen_y - @f_target_y).abs
end
#--------------------------------------------------------------------------
# ● 遠距離アニメ
#--------------------------------------------------------------------------
def flying_animation
# 戻る
if @step != "flying" or @flying_distance.nil?
return [false,true]
end
# あらかじめ計算
self_x = self.screen_x
self_y = self.screen_y
@flying_distance = @flying_distance == 0 ? 1 : @flying_distance
n1 = @flying_wait / @flying_distance.to_f
if @flying_distance - @flying_wait > @flying_distance / 2
n2 = 1.0 + 10.0 * @flying_wait / @flying_distance.to_f
else
n2 = 1.0 + 10.0 * (@flying_distance - @flying_wait) / @flying_distance.to_f
end
if !@flying_anime[4]
# 直線移動
x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
y = (self_y + 1.0 * (@f_target_y - self_y) * n1).to_i
else
# 曲線移動
if !@flying_proceed_end
x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
y = (self_y + 1.0 * (@f_target_y - self_y) * n1 - n2**2).to_i
else
x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
y = (self_y + 1.0 * (@f_target_y - self_y) * n1 + n2**2).to_i
end
end
# 座標代入
@flying_x = x
@flying_y = y
# ウエイト
if !@flying_proceed_end
# 開始
@flying_proceed_start = @flying_wait == 0
@flying_wait += @flying_anime[1]
@flying_wait = [@flying_wait,@flying_distance].min
@flying_proceed_end = @flying_wait == @flying_distance
else
# 開始
@flying_return_start = @flying_wait == @flying_distance
@flying_wait -= @flying_anime[1]
@flying_wait = [@flying_wait,0].max
@flying_return_end = @flying_wait == 0
end
if @flying_anime[1] == 0
@flying_end = true
elsif !@flying_anime[2]
@flying_end = @flying_proceed_end
else
@flying_end = @flying_return_end
end
# 値を返す(アニメ開始,アニメ終了)
return [@flying_proceed_start,@flying_end]
end
#--------------------------------------------------------------------------
# ● 遠距離アニメ初期化
#--------------------------------------------------------------------------
def flying_clear
@flying_proceed_start = false
@flying_proceed_end = false
@flying_return_start = false
@flying_return_end = false
@flying_end = false
@flying_anime = [0,0,false]
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1