幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1437|回复: 1

[RMXP] 求解华丽幻影的BUG

[复制链接]

2

主题

6

帖子

57

积分

②入门

积分
57
发表于 2009-9-27 13:36:38 | 显示全部楼层 |阅读模式
脚本如下,BUG是幻影出现的坐标设成了画面坐标了,应该用地图坐标吧,我试了下,画面跟随主角移动时,幻影出现的位置就是主角在画面上的位置,而到边的时候画面不动了,主角相对于画面的坐标改变了,幻影正常,所以此脚本内的幻影应该是设置成了于画面有关了......
也就是说,新建一个工程,如果地图的宽度和高度为最小值(地图画面不需要滚动的话),幻影才会正常。反之,如果地图的宽度和高度过大,地图画面一滚动,幻影就会变态了。
求解如何修改。
  1. class Game_Player < Game_Character
  2.   def mirage(opacity)
  3.     $scene.spriteset.mirage(self, opacity)
  4.   end
  5.   alias update_naiyoudadangao update
  6.     def update
  7.     update_naiyoudadangao
  8.     if Input.dir8 != 0
  9.       mirage(120)
  10.     end
  11.     end
  12.   end
  13. class Sprite_MirageCharacter < RPG::Sprite
  14.   attr_accessor :character            
  15.   def initialize(viewport, opacity, character = nil)
  16.     super(viewport)
  17.     @character = character
  18.     self.opacity = opacity
  19.     update
  20.   end
  21.   def update
  22.     super
  23.     if @tile_id != @character.tile_id or
  24.        @character_name != @character.character_name or
  25.        @character_hue != @character.character_hue
  26.       @tile_id = @character.tile_id
  27.       @character_name = @character.character_name
  28.       @character_hue = @character.character_hue
  29.       if @tile_id >= 384
  30.         self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  31.           @tile_id, @character.character_hue)
  32.         self.src_rect.set(0, 0, 32, 32)
  33.         self.ox = 16
  34.         self.oy = 32
  35.       else
  36.         self.bitmap = RPG::Cache.character(@character.character_name,
  37.           @character.character_hue)
  38.         @cw = bitmap.width / 4
  39.         @ch = bitmap.height / 4
  40.         self.ox = @cw / 2
  41.         self.oy = @ch
  42.         self.x = @character.screen_x
  43.         self.y = @character.screen_y
  44.       end
  45.     end
  46.     self.visible = (not @character.transparent)
  47.     if @tile_id == 0 and !@t
  48.       sx = @character.pattern * @cw
  49.       sy = (@character.direction - 2) / 2 * @ch
  50.       self.src_rect.set(sx, sy, @cw, @ch)
  51.       @t = true
  52.     end
  53.     self.z = @character.screen_z(@ch)
  54.     self.color.set(0,0,170,120)
  55.     self.opacity -= 5
  56.     self.blend_type = 1
  57.     self.bush_depth = @character.bush_depth
  58.     if @character.animation_id != 0
  59.       animation = $data_animations[@character.animation_id]
  60.       animation(animation, true)
  61.       @character.animation_id = 0
  62.     end
  63.   end
  64. end
  65. class Spriteset_Map
  66.   alias initialize_naiyoudadangao  initialize
  67.   def initialize
  68.     @mirage = {}
  69.     initialize_naiyoudadangao   
  70.   end
  71.   def mirage(obj, opacity)
  72.     @mirage[obj] ||= []
  73.     @mirage[obj].push(Sprite_MirageCharacter.new(@viewport1, opacity, obj))
  74.   end
  75. alias update_naiyoudadangao update
  76. def update
  77.    update_naiyoudadangao
  78.     for value in @mirage.values
  79.       for v in value
  80.         v.update
  81.         if v.opacity <= 0
  82.           v.dispose
  83.           value.delete(v)
  84.         end
  85.       end
  86.     end
  87.   end
  88. end
  89. class Scene_Map
  90.   attr_reader   :spriteset
  91. end
复制代码
回复

使用道具 举报

2

主题

6

帖子

57

积分

②入门

积分
57
 楼主| 发表于 2009-9-27 13:37:17 | 显示全部楼层
补充下,我是XP的用户
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-18 23:20 , Processed in 0.009754 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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