我正在网格上创建一个小型2D游戏(使用Javascript)。在这个游戏中,我有3种单位类型,比方说:
黑色方块是目标。 灰色一个就是单位。
单位的运动是好的,我可以在我想要的时候在观察广场上移动。目标是固定的。
我的问题是: 如何根据单位颜色(范围1,2或3)找到单位能够拍摄的所有图块?
我的意思是:
我虽然有一个带有两个嵌套循环的丑陋解决方案但是,也许有一个已知算法可以做到这一点......
我有一个(x,y)位置的目标和单位
我看到了这一个Algorithm for finding spaces to attack target within move-attack area on a 2D grid game board但我的问题在我看来更简单:
你能帮助我吗?
答案 0 :(得分:1)
这个怎么样?
boolean canShot(Unit unit, Target target){
if ((unit.minimumShotDistance <= Math.abs(unit.position.x - target.position.x) &&
unit.minimumShotDistance <= Math.abs(unit.position.y - target.position.y)){
return true;
}
return false;
}
答案 1 :(得分:0)
根据单位图块的颜色,设置范围值= 1(绿色),2(橙色)或3(蓝色)。
现在,范围(x,y)中的所有切片都是这样的:
x = targetX - range to targetX + range
y = targetY - range to targetY + range
and (x,y) is within board limits
将提供您的单位可以拍摄的所有图块。
如果你想知道无论是从目前的位置,单位是否可以射击目标,检查单位的坐标(x,y)是否满足上述条件。