Project1

标题: 攻击时指向敌人的箭头不见了 [打印本页]

作者: clannad    时间: 2010-7-4 16:09
标题: 攻击时指向敌人的箭头不见了
本帖最后由 「旅」 于 2010-7-4 16:23 编辑
  1. class Spriteset_Battle
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化变量
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6.     @viewport1 = Viewport.new(0, 60, 640, 480)
  7.     @viewport2 = Viewport.new(0, 0, 640, 480)
  8.     @viewport3 = Viewport.new(0, 0, 640, 480)
  9.     @viewport4 = Viewport.new(0, 0, 640, 480)
  10.     @viewport2.z = 101
  11.     @viewport3.z = 200
  12.     @viewport4.z = 5000
  13.     # 生成战斗背景活动块
  14.    [color=red] @viewport5 = Viewport.new(0,0,640,480)
  15.     @battleback_sprite = Sprite.new(@viewport5[/color])
  16.     # 生成敌人活动块
  17.     @enemy_sprites = []
  18.     for enemy in $game_troop.enemies.reverse
  19.    # @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  20.       @enemy_sprites.push(Sprite_Battler.new(@viewport4, enemy))#敌人的显示高度
  21.     end
  22.     # 生成敌人活动块
  23.     @actor_sprites = []
  24.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  25.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  26.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  27.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  28.     # 生成天候
  29.     @weather = RPG::Weather.new(@viewport1)
  30.     # 生成图片活动块
  31.     @picture_sprites = []
  32.     for i in 51..100
  33.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  34.         $game_screen.pictures[i]))
  35.     end
  36.     # 生成计时器块
  37.     @timer_sprite = Sprite_Timer.new
  38.     # 刷新画面
  39.     update
  40.   end
  41.   #..........................................................................
  42.   #--------------------------------------------------------------------------
  43.   # ● 胜利图
  44.   #--------------------------------------------------------------------------
  45.   def win
  46.     for sprite in @actor_sprites
  47.       sprite.win
  48.     end
  49.   end
  50.   #..........................................................................
  51.   #--------------------------------------------------------------------------
  52.   # ● 刷新画面
  53.   #--------------------------------------------------------------------------
  54.   def update
  55.     # 刷新角色的活动块 (对应角色的替换)
  56.     @actor_sprites[0].battler = $game_party.actors[0]
  57.     @actor_sprites[1].battler = $game_party.actors[1]
  58.     @actor_sprites[2].battler = $game_party.actors[2]
  59.     @actor_sprites[3].battler = $game_party.actors[3]
  60.     # 战斗背景的文件名与现在情况有差异的情况下
  61.     if @battleback_name != $game_temp.battleback_name
  62.       @battleback_name = $game_temp.battleback_name
  63.       if @battleback_sprite.bitmap != nil
  64.         @battleback_sprite.bitmap.dispose
  65.       end
  66.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  67.       @battleback_sprite.src_rect.set(0, 0, 640, 480)
  68.     end
  69.     # 刷新战斗者的活动块
  70.     for sprite in @enemy_sprites + @actor_sprites
  71.       sprite.update
  72.     end
  73.     # 刷新天气图形
  74.     @weather.type = $game_screen.weather_type
  75.     @weather.max = $game_screen.weather_max
  76.     @weather.update
  77.     # 刷新图片活动块
  78.     for sprite in @picture_sprites
  79.       sprite.update
  80.     end
  81.     # 刷新计时器活动块
  82.     @timer_sprite.update
  83.     # 设置画面的色调与震动位置
  84.     @viewport1.tone = $game_screen.tone
  85.     @viewport1.ox = $game_screen.shake
  86.     # 设置画面的闪烁色
  87.     @viewport4.color = $game_screen.flash_color
  88.     # 刷新显示端口
  89.     @viewport1.update
  90.     @viewport2.update
  91.     @viewport4.update
  92.   end
  93. end
  94. #--------------------------------------------------------------------------
  95.   # ● 获取光标指向的敌人
  96.   #--------------------------------------------------------------------------
  97.   def enemy
  98.     return $game_troop.enemies[@index]
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 刷新画面
  102.   #--------------------------------------------------------------------------
  103.   def update
  104.     super
  105.     # 如果指向不存在的敌人就离开
  106.     $game_troop.enemies.size.times do
  107.       break if self.enemy.exist?
  108.       @index += 1
  109.       @index %= $game_troop.enemies.size
  110.     end
  111.     # 光标右
  112.     if Input.repeat?(Input::RIGHT)
  113.       $game_system.se_play($data_system.cursor_se)
  114.       $game_troop.enemies.size.times do
  115.         @index += 1
  116.         @index %= $game_troop.enemies.size
  117.         break if self.enemy.exist?
  118.       end
  119.     end
  120.     # 光标左
  121.     if Input.repeat?(Input::LEFT)
  122.       $game_system.se_play($data_system.cursor_se)
  123.       $game_troop.enemies.size.times do
  124.         @index += $game_troop.enemies.size - 1
  125.         @index %= $game_troop.enemies.size
  126.         break if self.enemy.exist?
  127.       end
  128.     end
  129.     # 设置活动块坐标
  130.     if self.enemy != nil
  131.       self.x = self.enemy.screen_x + self.ox
  132.       self.y = self.enemy.screen_y + self.oy
  133.     end
  134.   end

  135. class Arrow_Actor < Arrow_Base
  136.   #--------------------------------------------------------------------------
  137.   # ● 获取光标指向的角色
  138.   #--------------------------------------------------------------------------
  139.   def actor
  140.     return $game_party.actors[@index]
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 刷新画面
  144.   #--------------------------------------------------------------------------
  145.   def update
  146.     super
  147.     # 光标右
  148.     if Input.repeat?(Input::RIGHT)
  149.       $game_system.se_play($data_system.cursor_se)
  150.       @index += 1
  151.       @index %= $game_party.actors.size
  152.     end
  153.     # 光标左
  154.     if Input.repeat?(Input::LEFT)
  155.       $game_system.se_play($data_system.cursor_se)
  156.       @index += $game_party.actors.size - 1
  157.       @index %= $game_party.actors.size
  158.     end
  159.     # 设置活动块坐标
  160.     if self.actor != nil
  161.       self.x = self.actor.screen_x + self.ox
  162.       self.y = self.actor.screen_y + self.oy
  163.     end
  164.   end
  165. end
复制代码
改了红色的那里,使战斗背景全面化了
但是改好后指针不见了,再改回来又有了,
- -
怎么解决?
作者: darkdrium    时间: 2010-7-4 16:18
lz你这个红色的地方默认脚本是没有@viewport5的

猜测你需要改下这个的z值,你试试看
作者: clannad    时间: 2010-7-4 16:24
改哪里的?z轴我一直搞不清
作者: darkdrium    时间: 2010-7-4 16:28
z轴越大的越靠近玩家,也就是说会遮住z轴小的
你加上一句@viewport5.z = xxx

不明白你还用了什么脚本,搜索这一页,只有两个@viewport5,根本看不出替代了@viewport1做什么用的(默认脚本里的战斗背景是在@viewport1里生成的)
作者: clannad    时间: 2010-7-4 16:33

我把那里改回成@battleback_sprite = Sprite.new(@viewport1)
结果变成先这样子了- -
上面多了一块黑的
作者: 逸豫    时间: 2010-7-4 16:41
话说为啥咱看不到红色……咱是色盲么……
作者: darkdrium    时间: 2010-7-4 16:48
@viewport1 = Viewport.new(0, 60, 640, 480)
这句的60改成0,默认的就是0
作者: clannad    时间: 2010-7-4 16:51
话说改好了,但是箭头还是在敌人的身后,(忘记说了,我用的是全动画脚本)
作者: darkdrium    时间: 2010-7-4 17:10
oh,我没研究过这个脚本,大概就是z的关系啦,你调整下这个z值试试
作者: clannad    时间: 2010-7-4 17:15
还是不行啊,我都调成天文数字了,还是在人物下面
作者: darkdrium    时间: 2010-7-4 17:18
回复 clannad 的帖子
这个z值是相对的,你调这个viewport1的是背景- -

要不你把整个工程的脚本发上来我试试看吧,script.rxxxxx那个文件


   
作者: clannad    时间: 2010-7-4 17:50
彩.rar (3.68 MB, 下载次数: 94)
问题还蛮多的,先把这个解决吧,谢谢了
作者: darkdrium    时间: 2010-7-4 18:09
回复 clannad 的帖子

这个。。。用了这么多的脚本。。。在下无能啊,战斗系统看不懂,没有敌人嘛这是


   
作者: clannad    时间: 2010-7-4 18:16
好吧,的确有点复杂,我还是老实点放弃全动画吧
作者: zhangbanxian    时间: 2010-7-4 21:26
Scene_Battle里搜这句
  1. @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
复制代码
改为
  1. new_veiwport = Viewport.new(0, 0, 640, 480)
  2. new_veiwport.z = 99999
  3. @enemy_arrow = Arrow_Enemy.new(new_veiwport)
复制代码
角色光标同理。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1