设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1730|回复: 3
打印 上一主题 下一主题

[已经过期] 菱形求检查

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2014-11-29 19:32:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
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准备高考就不@了···)
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv1.梦旅人

梦石
0
星屑
55
在线时间
185 小时
注册时间
2014-9-4
帖子
82
2
发表于 2014-11-29 22:46:42 | 只看该作者
本帖最后由 希忆 于 2014-11-29 22:47 编辑

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

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

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 05:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表