扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 96|回复: 0

[转载发布] [脚本]敌人选择框替换成“移动光标”

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2024-11-27 10:08
  • 签到天数: 108 天

    连续签到: 4 天

    [LV.6]常住居民II

    2229

    主题

    376

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    9686
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    12319

    灌水之王

    发表于 2024-11-21 18:34:45 | 显示全部楼层 |阅读模式
    RUBY 代码
    1. class Scene_Battle < Scene_Base
    2.   #--------------------------------------------------------------------------
    3.   # * 开始目标敌人选择 - 创建选择敌人指令光标
    4.   #--------------------------------------------------------------------------
    5.   def start_target_enemy_selection
    6.     @target_enemy_window = Window_TargetEnemy.new
    7.     @target_enemy_window.back_opacity = 100  # 设置窗口不透明度
    8.     @target_enemy_window.opacity = 255       # 设置窗口内容不透明
    9.     @target_enemy_window.height = 40         # 设置窗口高度
    10.     @target_enemy_window.width = 40          # 设置窗口宽度
    11.     @target_enemy_index = 0                  # 初始化选择的敌人索引
    12.     @info_viewport.rect.x += @target_enemy_window.width
    13.     @info_viewport.ox += @target_enemy_window.width
    14.     @actor_command_window.active = false   
    15.     @target_enemies = get_alive_enemies # 获取活着的敌人
    16.     update_enemy_cursor   # 更新光标位置
    17.   end
    18.   #--------------------------------------------------------------------------
    19.   # * 获取活着的敌人实例
    20.   #--------------------------------------------------------------------------
    21.   def get_alive_enemies
    22.     alive_enemies = []
    23.     $game_troop.members.eachdo |enemy|
    24.       alive_enemies.push(enemy)if enemy.exist? && !enemy.dead?
    25.     end
    26.     alive_enemies
    27.   end   
    28.   #--------------------------------------------------------------------------
    29.   # * 更新目标敌人选择
    30.   #--------------------------------------------------------------------------
    31.   def update_target_enemy_selection
    32.     if Input.trigger?(Input::B)
    33.       Sound.play_cancel
    34.        @enemy_name.visible = false
    35.       end_target_enemy_selection
    36.     elsif Input.trigger?(Input::C)
    37.       Sound.play_decision
    38.       select_enemy(@target_enemies[@target_enemy_index])if@target_enemies
    39.       end_target_enemy_selection
    40.       end_skill_selection
    41.       end_item_selection
    42.       next_actor
    43.     elsif Input.trigger?(Input::RIGHT) || Input.trigger?(Input::DOWN)
    44.       @target_enemy_index = (@target_enemy_index + 1) % @target_enemies.sizeif@target_enemies
    45.       @enemy_name.visible = false
    46.       update_enemy_cursor
    47.     elsif Input.trigger?(Input::LEFT) || Input.trigger?(Input::UP)
    48.       @target_enemy_index = (@target_enemy_index - 1 + @target_enemies.size) % @target_enemies.sizeif@target_enemies
    49.       @enemy_name.visible = false
    50.       update_enemy_cursor
    51.     end
    52.   end
    53.   #--------------------------------------------------------------------------
    54.   # * 更新敌人光标的位置和名称窗口
    55.   #--------------------------------------------------------------------------
    56.   def update_enemy_cursor
    57.     returnunless@target_enemies && @target_enemies[@target_enemy_index]# 确保数组存在且有元素
    58.     enemy = @target_enemies[@target_enemy_index]  # 获取当前选中的敌人
    59.     @target_enemy_window.x = enemy.screen_x - 18  # 更新光标位置到敌人的坐标
    60.     @target_enemy_window.y = enemy.screen_y - 40
    61.     ememy = get_alive_enemies
    62.     @target_enemy_window.visible = true# 确保光标窗口可见
    63.   # 创建敌人名称显示窗口
    64.     @enemy_name = Window_Base.new(@target_enemy_window.x - 60, @target_enemy_window.y + 46, 160, 50)
    65.     @enemy_name.back_opacity = 180
    66.     @enemy_name.contents.clear
    67.     @enemy_name.contents.draw_text(0, 0, enemy.name.length * 22, 22, enemy.name)   
    68.     @enemy_name.visible = true  # 确保敌人名称可见
    69.   end
    70.   #--------------------------------------------------------------------------
    71.   # * 光标选定敌人
    72.   #--------------------------------------------------------------------------
    73.   def select_enemy(enemy)
    74.     @active_battler.action.target_index = enemy.indexif enemy
    75.   end  
    76.   #--------------------------------------------------------------------------
    77.   # * 结束目标敌人选择
    78.   #--------------------------------------------------------------------------
    79.   def end_target_enemy_selection
    80.     @info_viewport.rect.x -= @target_enemy_window.width
    81.     @info_viewport.ox -= @target_enemy_window.width
    82.     @target_enemy_window.dispose
    83.     @target_enemy_window = nil
    84.     @enemy_name.dispose
    85.     @enemy_name = nil
    86.     @actor_command_window.active = trueif@actor_command_window.index == 0
    87.   end
    88. end
    复制代码


                本帖来自P1论坛作者swbsl,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=497209  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-1-30 05:30 , Processed in 0.793666 second(s), 135 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表