查看: 1943|回复: 3

[已经过期] 菱形求检查

[复制链接]
梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-11-29 19:32:02 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # * Scope Range#技能范围
  #Scope Range
  #--------------------------------------------------------------------------
  def scope_range?(user,target)
      t_r2 = [user.screen_x, user.screen_y] rescue nil
      t_r3 = [target.screen_x, target.screen_y] rescue nil
      return false if t_r2 == nil or t_r3 == nil
      s_r = [0,0,0,0] ; s_p = [0,0]
      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+)>/
      #if SCOPE_TYPE > 0
         s_p = [target.sprite_size[0] / 2, target.sprite_size[1]]
         s_p[0] = s_p[0] * SPRITE_SIZE_RANGE[0] / 100
         s_p[1] = s_p[1] * SPRITE_SIZE_RANGE[1] / 100
      #end
      case s_r[0]
      when 1#矩形
      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]))
      return false if !t_r3[1].between?(t_r2[1] - s_r[3], t_r2[1] + s_r[4] + s_p[1])
      when 2#菱形
# <Scope Range = X1 - X2 - Y1 - Y2>
#
#            Y1
#            
#       X1        X2
#            
#            Y2
#
# Ex ->      <Scope Range = (100 - 32 - 64 - 32>
      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]))
      if t_r3[0]<t_r2[0]#在横坐标负半轴上
        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])
      else
        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])
      end
      when 3#圆形
      end
      return true
  end  
end[/pre]
我在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准备高考就不@了···)
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
梦石
0
星屑
55
在线时间
185 小时
注册时间
2014-9-4
回帖
80
发表于 2014-11-29 22:46:42 | 显示全部楼层
本帖最后由 希忆 于 2014-11-29 22:47 编辑

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

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

回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

 楼主| 发表于 2014-11-29 22:49:33 | 显示全部楼层
希忆 发表于 2014-11-29 05:46
看了一下,
s_r[3]/s_r[1] 整数除法要转浮点吧。

以目标为中心

点评

所以我也是觉得貌似少了什么,那个条件分歧应该不对···  发表于 2014-11-29 22:54
那目标(比如二号角色)的坐标是哪个变量?需要做判断是否在范围内的角色的坐标呢?  发表于 2014-11-29 22:52
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

 楼主| 发表于 2014-11-29 22:51:48 | 显示全部楼层
希忆 发表于 2014-11-29 05:46
看了一下,
s_r[3]/s_r[1] 整数除法要转浮点吧。

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

点评

因为可以设置四个不同的点···x1x2y1y2可以分别设置,只有他们都一样才是标准菱形···  发表于 2014-11-29 23:11
这我是看出来了,只是感觉32行有点太简单,要我来估计就还要再分象限 中心y+(目标x-中心x)*上/左 话说菱形问啥要4个参数,两个不就够了么,对称的  发表于 2014-11-29 23:08
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部