找回密码
 点一下
查看: 1193|回复: 9

如何选取2个单位之间的单位?

[复制链接]
发表于 2010-11-6 10:57:01 | 显示全部楼层 |阅读模式
如题.....想做个能伤害自己和目标之间单位的技能,本来想循环用马甲放冲击波之类技能,但是这些技能攻击的距离是固定的.
选取单位又只有矩形和圆形,该如何做?
顺便一提.......我是J盲.
发表于 2010-11-6 11:20:46 | 显示全部楼层
如果你要一个完美的矩形,只用T也是可以实现的。

只是很繁琐

假设你要的矩形宽为2d
首先记录施法者的位置(x1,y1),目标位置(x2,y2)
然后记录施法者到目标的角度 α

只要建立单位组,条件是该单位的(x,y)在以上数据所能确定的一个矩形内。。
具体计算嘛。我表示懒得算了。。应该不会超过初中难度。只是很繁琐。

还可以用坐标变换的方式来算。。把坐标系设置成x轴平行于施法者至目标的方向,计算很方便,只是要先进行坐标转换(好吧,又是数学上的计算了)。
回复

使用道具 举报

 楼主| 发表于 2010-11-6 16:08:51 | 显示全部楼层
[quote][/quote]只要建立单位组,条件是该单位的(x,y)在以上数据所能确定的一个矩形内。。


不太明白,可以讲详细点吗?给个演示也可以~~~
那个坐标变换也不太懂~~用哪个来设置啊? 用哪个.jpg
谢谢啦`
回复

使用道具 举报

发表于 2010-11-7 13:11:55 | 显示全部楼层
好吧,不管怎样,我写一些吧。。
方法是我上面提到的变化坐标系。
手头没有WE,只有word和画图。。
未命名.JPG

O为施法者位置,记为(x1y1),T为施法点位置记为(x2y2)。
U为符合条件的单位的坐标,记为(xy
θ=TOXOT线与x轴的角)
在绿色的变换坐标系内,设U的坐标为(ab
a=x*cosθ+y*sinθ

b=-x*sinθ+y*cosθ



设一个实数变量h=O到T的距离,d=0.5*你要的区域的宽度

然后只要设置变量单位组units=一定区域(比如完整地图区域,或者更小更精确的范围)内的单位

选取units内的单位做动作:
  a=m*cosθ+n*sinθ

   b=-m*sinθ+n*cosθ

(上面不等式中,m=单位的x坐标-x1       n=单位的y坐标- y1
If   a<t |y|<b
Then 不做动作
Else 把选取单位从单位组units移除


于是现在,unit就是你要选取的单位组了,当然,这还没有将施法者和友军等分离出去,可以在上述if环节再加入语句进行剔除,那就看你自己的需求了
回复

使用道具 举报

发表于 2010-11-7 14:57:30 | 显示全部楼层
其实这个最简单的还是循环整数加极坐标位移点来做。。
回复

使用道具 举报

 楼主| 发表于 2010-11-7 15:18:03 | 显示全部楼层
唉....数学学得不给力啊,我决定还是在2单位间隔一段创建带献祭的马甲来烧算了.
还是谢谢指点拉~~~
回复

使用道具 举报

发表于 2010-11-7 15:19:33 | 显示全部楼层
那还不如释放距离长的冲击波呢。。
回复

使用道具 举报

 楼主| 发表于 2010-11-8 17:59:45 | 显示全部楼层
冲击波的距离```````不能根据单位间距离改变射程吧``````
技能还是做出来了````丢技能区玩~~~
回复

使用道具 举报

发表于 2010-11-8 19:00:04 | 显示全部楼层
楼主起码说一下什么叫做两个单位之间呀~
这个区域可以是矩形 菱形 圆形 香肠型 甚至是直线... 但你要的是什么效果呢?
回复

使用道具 举报

发表于 2010-11-8 19:42:23 | 显示全部楼层
你在技能区那贴我已经把冲击波演示贴上去了 谁说冲击波不能设置距离的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-6-17 02:51 , Processed in 0.052778 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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