设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3047|回复: 0
打印 上一主题 下一主题

[已经过期] 这个显示心情图标的脚本,显示会稍微错位?

[复制链接]

Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
20321
在线时间
4876 小时
注册时间
2014-12-22
帖子
1525

开拓者

跳转到指定楼层
1
发表于 2021-2-28 04:45:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 shencao 于 2021-2-28 04:43 编辑

这个脚本是,心情图标3~7格循环播放,还可以根据距离角色的远近半透明渐变显示。
但是它这个显示心情,当玩家移动和停止的时候,图标会动一下(错位1像素?),有种滞后的感觉。和默认的心情图标比较一下会很明显。
我用新工程测试过和别的脚本没关系,它原本就是会这么错位一下。
有办法修复吗?

脚本↓

RUBY 代码复制
  1. =begin
  2.       RGSS3
  3.       
  4.       ★ フキダシアイコン常時再生 ★
  5.  
  6.       フキダシアイコンを表示し続けるキャラクターを作ります。
  7.       寝ているキャラなどにどうぞ。
  8.       新たな画像ファイルを作って、お店の看板代わりとかもいいかも。
  9.  
  10.       ● 仕様 ●==========================================================
  11.       横に8分割されたフキダシアイコン画像の内、
  12.       左から 3~7つ目をループ再生します。
  13.       ====================================================================
  14.       
  15.       ● 使い方 ●========================================================
  16.       イベント>自律移動>カスタム>移動ルート>スクリプトに
  17.           @auto_balloon = n
  18.       と記述してください。nはフキダシアイコンのIDです。
  19.       ====================================================================
  20.       
  21.       ver1.00
  22.  
  23.       Last Update : 2011/12/18
  24.       12/18 : 新規
  25.       
  26.       ろかん   [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]
  27. =end
  28.  
  29. #===========================================
  30. #   設定箇所
  31. #===========================================
  32. module Rokan
  33. module Auto_Balloon
  34.     # フキダシの半透明化が始まるプレイヤーとの距離
  35.     # 不透明化を行わない場合は"0"を設定してください。
  36.     DBO = 4
  37.  
  38. end
  39. end
  40. #===========================================
  41. #   ここまで
  42. #===========================================
  43.  
  44. $rsi ||= {}
  45. $rsi["フキダシアイコン常時再生"] = true
  46.  
  47. class Game_Event < Game_Character
  48.   #--------------------------------------------------------------------------
  49.   # ● 公開インスタンス変数
  50.   #--------------------------------------------------------------------------
  51.   attr_reader   :auto_balloon
  52.   #--------------------------------------------------------------------------
  53.   # ● 公開メンバ変数の初期化
  54.   #--------------------------------------------------------------------------
  55.   alias _auto_balloon_init init_public_members
  56.   def init_public_members
  57.     _auto_balloon_init
  58.     @auto_balloon = 0
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● プレイヤーからの距離を取得
  62.   #--------------------------------------------------------------------------
  63.   def distance_from_player
  64.     distance_x_from($game_player.x).abs + distance_y_from($game_player.y).abs
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● イベントページのセットアップ
  68.   #--------------------------------------------------------------------------
  69.   alias _auto_balloon_setup_page setup_page
  70.   def setup_page(new_page)
  71.     @auto_balloon = 0
  72.     _auto_balloon_setup_page(new_page)
  73.   end
  74. end
  75.  
  76. class Sprite_Character < Sprite_Base
  77.   #--------------------------------------------------------------------------
  78.   # ● インクルード Rokan::Auto_Balloon
  79.   #--------------------------------------------------------------------------
  80.   include Rokan::Auto_Balloon
  81.   #--------------------------------------------------------------------------
  82.   # ● 解放
  83.   #--------------------------------------------------------------------------
  84.   alias _auto_balloon_dispose dispose
  85.   def dispose
  86.     dispose_auto_balloon
  87.     _auto_balloon_dispose
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 常時再生フキダシアイコンの解放
  91.   #--------------------------------------------------------------------------
  92.   def dispose_auto_balloon
  93.     @bw = 10
  94.     @bx = -1
  95.     @auto_balloon_id = 0
  96.     if @auto_balloon_sprite
  97.       @auto_balloon_sprite.dispose
  98.       @auto_balloon_sprite = nil
  99.     end
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● フレーム更新
  103.   #--------------------------------------------------------------------------
  104.   alias _auto_balloon_update update
  105.   def update
  106.     update_auto_balloon
  107.     _auto_balloon_update
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● プレイヤーからの距離を取得
  111.   #--------------------------------------------------------------------------
  112.   def distance_from_player
  113.     @character.distance_from_player
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 距離によるフキダシの透明度を取得
  117.   #--------------------------------------------------------------------------
  118.   def distance_balloon_opacity
  119.     DBO.zero? ? 255 : 255 - 50 * (distance_from_player - DBO)
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 表示するフキダシのX座標を取得
  123.   #--------------------------------------------------------------------------
  124.   def auto_balloon_x
  125.     @bx * 32 + 64
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 表示するフキダシのY座標を取得
  129.   #--------------------------------------------------------------------------
  130.   def auto_balloon_y
  131.     (@auto_balloon_id - 1) * 32
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 常時再生フキダシアイコン表示の開始
  135.   #--------------------------------------------------------------------------
  136.   def start_auto_balloon
  137.     dispose_auto_balloon
  138.     @auto_balloon_id = @character.auto_balloon
  139.     @auto_balloon_sprite = Sprite.new(self.viewport)
  140.     @auto_balloon_sprite.bitmap = Cache.system("Balloon")
  141.     @auto_balloon_sprite.z = self.z + 200
  142.     @auto_balloon_sprite.ox = 16
  143.     @auto_balloon_sprite.oy = 32
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 常時再生フキダシアイコンの更新
  147.   #--------------------------------------------------------------------------
  148.   def update_auto_balloon
  149.     if @character.is_a?(Game_Event)
  150.       if @character.auto_balloon.zero? || !@balloon_duration.zero?
  151.         dispose_auto_balloon
  152.       else
  153.         start_auto_balloon if !@auto_balloon_sprite || @auto_balloon_id != @character.auto_balloon
  154.         @auto_balloon_sprite.x = self.x
  155.         @auto_balloon_sprite.y = self.y - self.height
  156.         @auto_balloon_sprite.opacity = distance_balloon_opacity
  157.         if @bw == 10
  158.           @bw = 0
  159.           @bx = @bx == 4 ? 0 : @bx.next
  160.           @auto_balloon_sprite.src_rect.set(auto_balloon_x, auto_balloon_y, 32, 32)
  161.         else
  162.           @bw = @bw.next
  163.         end
  164.       end
  165.     end
  166.   end
  167. end



另外这个错位,稍微有点类似va本身的一个bug,就是当移动速度非整数(?)的时候地图事件图会错位1像素。
我用了下面这个脚本来修正,虽然用全新工程测试过和这个没关系(我也感觉没什么关系,但我也想不出显示心情错位还能跟什么有关系?)反正也贴一下供参考:
我折叠一下

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-26 08:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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