查看: 1666|回复: 0

[已经解决] 请帮我看一段代码的错误在哪里?已自己解决

[复制链接]
梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
回帖
177

开拓者

发表于 2017-9-10 00:56:39 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 飞翔的小鸟3 于 2017-9-11 18:31 编辑

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



直接进入正题,我写的是判定手枪是否击中敌人的代码,由于代码有些是重复的,这里只给出可能出问题的代码。
[pre lang="ruby"]class Gun_battle
  def start
    $mun_id = 0
    $ok2 = 0
    $orientation = $game_player.direction

    find_id_and_voluation
    l
  end


  def find_id_and_voluation
    idArray = $game_map.events.keys.find_all{|id| $game_map.events[id].name == '丧尸'}
    for @event_id in idArray
      x =  $game_player.x
      y =  $game_player.y
      ax = $game_map.events[@event_id].x
      ay = $game_map.events[@event_id].y
  
    #------------------------------------朝向右时
      if y == ay then
        if $orientation == 6  # 【  and Input.press? (:C) 】这段代码等下加下去,先去掉....
          for bx in x..ax
    #------------------------------------判断敌人与角色间是否有障碍物,$ok2= 0时为没有。
            a = $game_map.check_passage(bx,y,0x0f)
             if a == false
               $ok2 = $ok2 + 1
             end
          end
    #-----------------------------------当角色朝右,敌人的X坐标应大于角色,但是敌人的X的坐标不能大于子弹射程,这时判定为击中。
          if x < ax and ax < x + 17 then
            $ok1 = 0
            if $mun_id == 0
             $axy = @event_id
             $mun_id = 1
            end
          end
        end
     end
end
end

#--------------------满足没有障碍物,在射程内,改变变量7的数值
   def l
     if $ok1 == 0 and $ok2 == 0 then
    $game_variables[7]= $axy
     end
   end
end
[/pre]

2个问题:
1.关于调用的问题
当加上那段代码时(22行后面+and Input.press?(:C) ),我在并行事件里调用
[pre lang="ruby"]a = Gun_battle.new
a.start[/pre]
此时,子弹直接穿过障碍物击中敌人,怎么回事呢?我有写$game_map.check_passage(x,y,0x0f),用来判断敌人与主角间是否有障碍物啊。
而,当我用:
[pre lang="ruby"]if Input.press?(:C)
a = Gun_battle.new
a.start
end[/pre]
一切正常,并不会穿过墙壁。
2.去掉那段代码或不去掉都可以,因为都出现差不多的问题。
那就是,我在墙壁一边开枪,理论上是射不到敌人的,但是又当我一直按Z键并朝向右边,然后突然左转(按下左箭头),并按下Z键,这时敌人被击中了,为什么呐?明明不在范围内啊(角色<敌人<子弹射程)。
实在想不通......

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



一觉醒来,灵感迸发,找到问题所在了
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部