Project1

标题: 菱形求检查 [打印本页]

作者: chd114    时间: 2014-11-29 19:32
标题: 菱形求检查
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # * Scope Range#技能范围
  3.   #Scope Range
  4.   #--------------------------------------------------------------------------
  5.   def scope_range?(user,target)
  6.       t_r2 = [user.screen_x, user.screen_y] rescue nil
  7.       t_r3 = [target.screen_x, target.screen_y] rescue nil
  8.       return false if t_r2 == nil or t_r3 == nil
  9.       s_r = [0,0,0,0] ; s_p = [0,0]
  10.       s_r = [$1.to_i,$2.to_i,$3.to_i,$4.to_i,$5.to_i] if @item.object.note =~ /<SR:(\d+):(\d+)-(\d+)-(\d+)-(\d+)>/
  11.       #if SCOPE_TYPE > 0
  12.          s_p = [target.sprite_size[0] / 2, target.sprite_size[1]]
  13.          s_p[0] = s_p[0] * SPRITE_SIZE_RANGE[0] / 100
  14.          s_p[1] = s_p[1] * SPRITE_SIZE_RANGE[1] / 100
  15.       #end
  16.       case s_r[0]
  17.       when 1#矩形
  18.       return false if !t_r3[0].between?(t_r2[0] - (s_r[1] + s_p[0]), t_r2[0] + (s_r[2] + s_p[0]))
  19.       return false if !t_r3[1].between?(t_r2[1] - s_r[3], t_r2[1] + s_r[4] + s_p[1])
  20.       when 2#菱形
  21. # <Scope Range = X1 - X2 - Y1 - Y2>
  22. #
  23. #            Y1
  24. #            
  25. #       X1        X2
  26. #            
  27. #            Y2
  28. #
  29. # Ex ->      <Scope Range = (100 - 32 - 64 - 32>
  30.       return false if !t_r3[0].between?(t_r2[0] - (s_r[1] + s_p[0]), t_r2[0] + (s_r[2] + s_p[0]))
  31.       if t_r3[0]<t_r2[0]#在横坐标负半轴上
  32.         return false if !t_r3[1].between?(-s_r[3]/s_r[1]*t_r3[0]-s_r[3],s_r[4]+s_r[4]/s_r[1]*t_r3[0])
  33.       else
  34.         return false if !t_r3[1].between?(s_r[3]/s_r[2]*t_r3[0]-s_r[3],s_r[4]-s_r[4]/s_r[2]*t_r3[0])
  35.       end
  36.       when 3#圆形
  37.       end
  38.       return true
  39.   end  
  40. end

我在SideView里面插入了技能范围,然后加了一个菱形的技能范围···但是实际应用感觉不太对可又看不出来···
  1. ACTOR_POSITION   = [[415,160, 0],[435,185, 0],[455,210, 0]]
复制代码
分别对应队伍里1-3号角色的位置,1号角色用<SR:2:150-150-150-150>备注的治疗技能,给1号角色用则只有1号角色恢复,给2号角色用1、2号角色恢复,给3号角色用1、2、3号角色恢复···问题出在哪里呢···
@三途亚梦 @VIPArcher (@Taroxd准备高考就不@了···)
作者: 希忆    时间: 2014-11-29 22:46
本帖最后由 希忆 于 2014-11-29 22:47 编辑

看了一下,
s_r[3]/s_r[1] 整数除法要转浮点吧。

没怎么看懂,是要求目标在使用者中心内的菱形范围?还是以目标为中心的菱形范围?
user是使用者吗?target是需要做判断是否在内的角色吗?那么给二号角色使用技能的这个二号角色“使用目标”的坐标如何表述?
而且计算方法我感觉怪怪的,,好长时间才大概哪个变量应该是干啥的。


作者: chd114    时间: 2014-11-29 22:49
希忆 发表于 2014-11-29 05:46
看了一下,
s_r[3]/s_r[1] 整数除法要转浮点吧。

以目标为中心
作者: chd114    时间: 2014-11-29 22:51
希忆 发表于 2014-11-29 05:46
看了一下,
s_r[3]/s_r[1] 整数除法要转浮点吧。

我和数学老师讨论后的结果是先确定单位x坐标,然后根据单位x坐标算出单位y坐标的范围,这里用的是四个一次函数···




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