Project1

标题: 范围判定不能,求解…… [打印本页]

作者: fux2    时间: 2010-11-1 15:31
标题: 范围判定不能,求解……
本帖最后由 fux2 于 2010-11-1 21:19 编辑

我在游戏里调用skillattack(32,0,30,64)
定义如下:
  1.   def skillattack(zx,zy,zw,zh)
  2.     for ev in $game_map.events.values
  3.       if ev.name.include?("Mob")
  4.       if @direction == 6
  5.         zx = $game_player.x + zx
  6.   #      zy = $game_player.y + zy
  7.       else
  8.         zx = $game_player.x - zx - zw + 32
  9.   #      zy = $game_player.y - zy - zh + 32
  10.       end
  11.         if ev.x <= zx + zw and ev.x + 32 >= zx #and ev.y <= zy + zh and ev.y + 32 >= zy
  12.           ev.m = false
  13.           ev.pattern = ev.original_pattern
  14.           ev.zt = 3
  15.           ev.wait_count = 30
  16.           Audio.se_play("Audio/SE/9400112h", 100, 100)
  17.           if ev.m == false
  18.             ev.picname += "teng02001-0201"
  19.           end
  20.         end
  21.       end
  22.     end
  23.   end
复制代码
我想实现的是如果怪物在以zx,zy为原点,zw,zh为高宽的范围内,则执行后面的代码

但是,测试起来发现只要怪物在角色面朝的方向,就会执行后面的代码,求解~~~
作者: bsyjfc    时间: 2010-11-1 16:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2010-11-1 19:31
我擦一户口本儿的泪啊!我这个ID一共发过18个提问帖,只有3个没有沉....
作者: orochi2k    时间: 2010-11-1 19:50
本帖最后由 orochi2k 于 2010-11-1 19:53 编辑

果断欺负一下那堆+32~~~+20~~~之类的东东……

偶咋记得EVENT.X和EVENT.Y都没那么大来着……

不过偶来玩距离计算的话貌似会直接邪恶地勾股定理……
作者: wbsy8241    时间: 2010-11-1 19:52
本帖最后由 wbsy8241 于 2010-11-1 19:56 编辑
  1.       if @direction == 6
  2.         ...
  3.       else
  4.         ...
  5.       end
  6.         if ev.x <= zx + zw and ev.x + 20 >= zx
  7.           ....
  8.         end
复制代码
下面IF的位置和上面的没关系的吧.
上面怎么判断下面的都会判断的.

还有啊 .x .y是坐标 1个屏幕最大也就x = 20  y =15

zh = 64 那就是攻击范围4个屏幕还要大的范围?

作者: seasoneast    时间: 2010-11-1 20:52
回复 fux2 的帖子

有关zy的代码不是都被#注释掉了吗……?那样应该只是会判定横坐标吧,所以才朝向怪物就执行吧……?要不试试给zx定某一个值,然后再把怪放在这个值的横坐标外,如果不执行就应该是注释的缘故吧……?
作者: fux2    时间: 2010-11-1 20:58
回复 seasoneast 的帖子

....zy我有意注释的,我只判断它是否在横坐标范围内,要zy暂时无用。据5楼提醒,是谢特的x与real_x的混淆吧。




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