Project1
标题:
如何在战斗中人物被选中时播放动画
[打印本页]
作者:
浪迹天涯
时间:
2013-4-4 22:52
标题:
如何在战斗中人物被选中时播放动画
请问如何在战斗中,每个人物(包括主角和敌人)、在主角回合开始时、以及敌人被选中时(就是默认情况下那把剑的图标出现)
显示一段动画、
就是仙五战斗系统中、在敌人或主角下画一个圈。
那个画圈的动画我已做好、现在只差显示动画
请问如何解决。
作者:
芯☆淡茹水
时间:
2013-4-4 23:20
本帖最后由 芯☆淡茹水 于 2013-4-4 23:21 编辑
试验了一下,话说播放动画好像不能中途中断吧,所以选择对象时,要等动画播放完才能接受按键操作。
试做了一个,只有选择敌人,但按键很费劲,待高手解决
class Arrow_Base < Sprite
def update
# 刷新点灭记数
@blink_count = (@blink_count + 1) % 8
# 设置传送源矩形
if @blink_count < 4
self.src_rect.set(128, 96, 32, 32)
else
self.src_rect.set(160, 96, 32, 32)
end
target = $game_troop.enemies[@index]
if target.exist?
# 设置动画 ID
target.animation_id = 2
end
# 刷新帮助文本 (update_help 定义了继承目标)
if @help_window != nil
update_help
end
end
end
复制代码
14行为动画ID
作者:
joe5491
时间:
2013-4-5 02:22
本帖最后由 joe5491 于 2013-4-5 02:23 编辑
寫好了~自己看看效果~
p.s.參數記得調整
#==========================================================
#★ 選中動畫 -by joe59491
#===========================================================
#========參數設定===========================================
$choise_animation=2 #選中動畫編號
$empty_animation=999 #一個空動畫的編號動畫編號(必須在資料庫裡)
# p.s.如果空動畫的編號是在資料庫設定大小外的話,戰鬥畫面會卡住
#===========================================================
class Scene_Battle
def update_phase3_enemy_select
# 更新敵人箭頭
@old_ene_arr_idx=@enemy_arrow.index
loop do
if
[email protected]
?
$game_troop.enemies[@enemy_arrow.index].animation_id = $choise_animation
end
if @enemy_arrow.index != @old_ene_arr_idx
$game_troop.enemies[@old_ene_arr_idx].animation_id = $empty_animation
$game_troop.enemies[@enemy_arrow.index].animation_id = $choise_animation
end
@old_ene_arr_idx = @enemy_arrow.index
@spriteset.update
@enemy_arrow.update
$game_system.update
$game_screen.update
Input.update
Graphics.update
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
$game_troop.enemies[@enemy_arrow.index].animation_id = $empty_animation
@choise = 0
break
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
$game_troop.enemies[@enemy_arrow.index].animation_id = $empty_animation
@choise=1
break
end
end
@spriteset.update
if @choise == 0
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 選擇敵人結束
end_enemy_select
return
else
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.target_index = @enemy_arrow.index
# 選擇敵人結束
end_enemy_select
# 顯示技能視窗中的情況下
if @skill_window != nil
# 結束技能選擇
end_skill_select
end
# 顯示物品視窗的情況下
if @item_window != nil
# 結束物品選擇
end_item_select
end
# 轉到下一位角色的指令輸入
phase3_next_actor
end
end
def update_phase3_actor_select
@old_act_arr_idx=@actor_arrow.index
loop do
if
[email protected]
?
$game_party.actors[@actor_arrow.index].animation_id = $choise_animation
end
if @actor_arrow.index != @old_act_arr_idx
$game_party.actors[@old_act_arr_idx].animation_id = $empty_animation
$game_party.actors[@actor_arrow.index].animation_id = $choise_animation
end
@old_act_arr_idx = @actor_arrow.index
@spriteset.update
@actor_arrow.update
$game_system.update
$game_screen.update
Input.update
Graphics.update
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
$game_party.actors[@actor_arrow.index].animation_id = $empty_animation
@choise = 0
break
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
$game_party.actors[@actor_arrow.index].animation_id = $empty_animation
@choise = 1
break
end
end
if @choise == 0
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 選擇角色結束
end_actor_select
return
else
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.target_index = @actor_arrow.index
# 選擇角色結束
end_actor_select
# 顯示技能視窗中的情況下
if @skill_window != nil
# 結束技能選擇
end_skill_select
end
# 顯示物品視窗的情況下
if @item_window != nil
# 結束物品選擇
end_item_select
end
# 轉到下一位角色的指令輸入
phase3_next_actor
end
end
def update_phase3_basic_command
loop do
if
[email protected]
?
$game_party.actors[@actor_index].animation_id = $choise_animation
end
@spriteset.update
@actor_command_window.update
$game_system.update
$game_screen.update
Input.update
Graphics.update
if Input.trigger?(Input::B)
$game_party.actors[@actor_index].animation_id = $empty_animation
@choise=0
break
end
if Input.trigger?(Input::C)
$game_party.actors[@actor_index].animation_id = $empty_animation
@choise=1
break
end
end
if @choise == 0
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 轉向前一個角色的指令輸入
phase3_prior_actor
return
else
# 角色指令視窗游標位置分之
case @actor_command_window.index
when 0 # 攻擊
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
# 開始選擇敵人
start_enemy_select
when 1 # 技能
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 1
# 開始選擇技能
start_skill_select
when 2 # 防禦
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
# 轉向下一位角色的指令輸入
phase3_next_actor
when 3 # 物品
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 2
# 開始選擇物品
start_item_select
end
return
end
end
end
复制代码
作者:
浪迹天涯
时间:
2013-4-5 18:00
joe5491 发表于 2013-4-5 02:22
寫好了~自己看看效果~
p.s.參數記得調整
其他都可以、只是人物一旦被选中、这个的动画就会一直被重复播放、我的本意是只播放一次就可以了、请问如何修改?
作者:
joe5491
时间:
2013-4-5 21:40
在看看效果吧~
#==========================================================
#★ 選中動畫v2 -by joe59491
#===========================================================
#========參數設定===========================================
$choise_animation=2 #選中動畫編號
$empty_animation=999 #一個空動畫的編號動畫編號(必須在資料庫裡)
# p.s.如果空動畫的編號是在資料庫設定大小外的話,戰鬥畫面會卡住
#===========================================================
class Scene_Battle
def update_phase3_enemy_select
# 更新敵人箭頭
@old_ene_arr_idx=@enemy_arrow.index
$game_troop.enemies[@enemy_arrow.index].animation_id = $choise_animation
loop do
if @enemy_arrow.index != @old_ene_arr_idx
$game_troop.enemies[@old_ene_arr_idx].animation_id = $empty_animation
$game_troop.enemies[@enemy_arrow.index].animation_id = $choise_animation
end
@old_ene_arr_idx = @enemy_arrow.index
@spriteset.update
@enemy_arrow.update
$game_system.update
$game_screen.update
Input.update
Graphics.update
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
$game_troop.enemies[@enemy_arrow.index].animation_id = $empty_animation
@choise = 0
break
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
$game_troop.enemies[@enemy_arrow.index].animation_id = $empty_animation
@choise=1
break
end
end
@spriteset.update
if @choise == 0
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 選擇敵人結束
end_enemy_select
return
else
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.target_index = @enemy_arrow.index
# 選擇敵人結束
end_enemy_select
# 顯示技能視窗中的情況下
if @skill_window != nil
# 結束技能選擇
end_skill_select
end
# 顯示物品視窗的情況下
if @item_window != nil
# 結束物品選擇
end_item_select
end
# 轉到下一位角色的指令輸入
phase3_next_actor
end
end
def update_phase3_actor_select
@old_act_arr_idx=@actor_arrow.index
$game_party.actors[@actor_arrow.index].animation_id = $choise_animation
loop do
if @actor_arrow.index != @old_act_arr_idx
$game_party.actors[@old_act_arr_idx].animation_id = $empty_animation
$game_party.actors[@actor_arrow.index].animation_id = $choise_animation
end
@old_act_arr_idx = @actor_arrow.index
@spriteset.update
@actor_arrow.update
$game_system.update
$game_screen.update
Input.update
Graphics.update
# 按下 B 鍵的情況下
if Input.trigger?(Input::B)
$game_party.actors[@actor_arrow.index].animation_id = $empty_animation
@choise = 0
break
end
# 按下 C 鍵的情況下
if Input.trigger?(Input::C)
$game_party.actors[@actor_arrow.index].animation_id = $empty_animation
@choise = 1
break
end
end
if @choise == 0
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 選擇角色結束
end_actor_select
return
else
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.target_index = @actor_arrow.index
# 選擇角色結束
end_actor_select
# 顯示技能視窗中的情況下
if @skill_window != nil
# 結束技能選擇
end_skill_select
end
# 顯示物品視窗的情況下
if @item_window != nil
# 結束物品選擇
end_item_select
end
# 轉到下一位角色的指令輸入
phase3_next_actor
end
end
def update_phase3_basic_command
$game_party.actors[@actor_index].animation_id = $choise_animation
loop do
@spriteset.update
@actor_command_window.update
$game_system.update
$game_screen.update
Input.update
Graphics.update
if Input.trigger?(Input::B)
$game_party.actors[@actor_index].animation_id = $empty_animation
@choise=0
break
end
if Input.trigger?(Input::C)
$game_party.actors[@actor_index].animation_id = $empty_animation
@choise=1
break
end
end
if @choise == 0
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 轉向前一個角色的指令輸入
phase3_prior_actor
return
else
# 角色指令視窗游標位置分之
case @actor_command_window.index
when 0 # 攻擊
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
# 開始選擇敵人
start_enemy_select
when 1 # 技能
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 1
# 開始選擇技能
start_skill_select
when 2 # 防禦
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
# 轉向下一位角色的指令輸入
phase3_next_actor
when 3 # 物品
# 演奏確定 SE
$game_system.se_play($data_system.decision_se)
# 設定行動
@active_battler.current_action.kind = 2
# 開始選擇物品
start_item_select
end
return
end
end
end
复制代码
作者:
浪迹天涯
时间:
2013-4-13 21:35
joe5491 发表于 2013-4-5 21:40
在看看效果吧~
可以了!谢谢您。
由于是学生党,只有星期六能上网,这么晚才回复,实在抱歉。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1