加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 飞翔的小鸟3 于 2017-9-11 18:31 编辑
版主,这个也被我自己解决了,又没有人回答,可以删掉吗?或者怎么样?
直接进入正题,我写的是判定手枪是否击中敌人的代码,由于代码有些是重复的,这里只给出可能出问题的代码。
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
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
2个问题:
1.关于调用的问题
当加上那段代码时(22行后面+and Input.press?(:C) ),我在并行事件里调用
a = Gun_battle.new a.start
a = Gun_battle.new
a.start
此时,子弹直接穿过障碍物击中敌人,怎么回事呢?我有写$game_map.check_passage(x,y,0x0f),用来判断敌人与主角间是否有障碍物啊。
而,当我用:
if Input.press?(:C) a = Gun_battle.new a.start end
if Input.press?(:C)
a = Gun_battle.new
a.start
end
一切正常,并不会穿过墙壁。
2.去掉那段代码或不去掉都可以,因为都出现差不多的问题。
那就是,我在墙壁一边开枪,理论上是射不到敌人的,但是又当我一直按Z键并朝向右边,然后突然左转(按下左箭头),并按下Z键,这时敌人被击中了,为什么呐?明明不在范围内啊(角色<敌人<子弹射程)。
实在想不通......
大佬们,靠你们了。先谢谢
一觉醒来,灵感迸发,找到问题所在了 |