Project1

标题: 请帮我看一段代码的错误在哪里?已自己解决 [打印本页]

作者: 飞翔的小鸟3    时间: 2017-9-10 00:56
标题: 请帮我看一段代码的错误在哪里?已自己解决
本帖最后由 飞翔的小鸟3 于 2017-9-11 18:31 编辑

版主,这个也被我自己解决了,又没有人回答,可以删掉吗?或者怎么样?



直接进入正题,我写的是判定手枪是否击中敌人的代码,由于代码有些是重复的,这里只给出可能出问题的代码。
RUBY 代码复制
  1. class Gun_battle
  2.   def start
  3.     $mun_id = 0
  4.     $ok2 = 0
  5.     $orientation = $game_player.direction
  6.  
  7.     find_id_and_voluation
  8.     l
  9.   end
  10.  
  11.  
  12.   def find_id_and_voluation
  13.     idArray = $game_map.events.keys.find_all{|id| $game_map.events[id].name == '丧尸'}
  14.     for @event_id in idArray
  15.       x =  $game_player.x
  16.       y =  $game_player.y
  17.       ax = $game_map.events[@event_id].x
  18.       ay = $game_map.events[@event_id].y
  19.  
  20.     #------------------------------------朝向右时
  21.       if y == ay then
  22.         if $orientation == 6  # 【  and Input.press? (:C) 】这段代码等下加下去,先去掉....
  23.           for bx in x..ax
  24.     #------------------------------------判断敌人与角色间是否有障碍物,$ok2= 0时为没有。
  25.             a = $game_map.check_passage(bx,y,0x0f)
  26.              if a == false
  27.                $ok2 = $ok2 + 1
  28.              end
  29.           end
  30.     #-----------------------------------当角色朝右,敌人的X坐标应大于角色,但是敌人的X的坐标不能大于子弹射程,这时判定为击中。
  31.           if x < ax and ax < x + 17 then
  32.             $ok1 = 0
  33.             if $mun_id == 0
  34.              $axy = @event_id
  35.              $mun_id = 1
  36.             end
  37.           end
  38.         end
  39.      end
  40. end
  41. end
  42.  
  43. #--------------------满足没有障碍物,在射程内,改变变量7的数值
  44.    def l
  45.      if $ok1 == 0 and $ok2 == 0 then
  46.     $game_variables[7]= $axy
  47.      end
  48.    end
  49. end


2个问题:
1.关于调用的问题
当加上那段代码时(22行后面+and Input.press?(:C) ),我在并行事件里调用
RUBY 代码复制
  1. a = Gun_battle.new
  2. a.start

此时,子弹直接穿过障碍物击中敌人,怎么回事呢?我有写$game_map.check_passage(x,y,0x0f),用来判断敌人与主角间是否有障碍物啊。
而,当我用:
RUBY 代码复制
  1. if Input.press?(:C)
  2. a = Gun_battle.new
  3. a.start
  4. end

一切正常,并不会穿过墙壁。
2.去掉那段代码或不去掉都可以,因为都出现差不多的问题。
那就是,我在墙壁一边开枪,理论上是射不到敌人的,但是又当我一直按Z键并朝向右边,然后突然左转(按下左箭头),并按下Z键,这时敌人被击中了,为什么呐?明明不在范围内啊(角色<敌人<子弹射程)。
实在想不通......

大佬们,靠你们了。先谢谢



一觉醒来,灵感迸发,找到问题所在了





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