我已经遍寻搜索,并且无法找到这个看似常见的问题的答案,令人惊讶。我目前面临的问题是检查球员是否面对敌人,如果是球员的视野范围(可调整),并且如果它在该范围内,则以最近的安全方向移动。检查两个物体是否面临海誓山盟
这里有一个画面:d
所以,我将如何做到这一点?我有每艘船舶物体的x
,y
和direction
。这是我最后一次失败的尝试,试图考虑玩家的方向与敌人相对于玩家的方向完全相差180度。
var direction=Math.direction(this.x,this.y,player.x,player.y,1),
playerview=Math.abs(direction)-Math.abs(player.direction-180)
if(Math.abs(playerview)<10) {
console.log('in view')
this.xVelocity+=AI.speed*Math.sin(playerview*Math.PI/180)
this.xVelocity+=AI.speed*Math.cos(playerview*Math.PI/180)
}
在这个例子中,10
就是范围。当然,我只是设法让船只向右转,所以除了检测只工作半圈之外,我也不能让敌人向右转。有任何想法吗?
谢谢,复制xVelocity是一个平庸的错误^^;然而,问题并不在于移动船,它正在得到正确的检测。 我确定Math.direction的工作原理是我用它来处理所有其他事情。我自己添加了原型;我知道这不是标准。 而且,在昏昏欲睡的状态中,我做了我想要的不好的话。我想要的是检查玩家是否面对敌人,给出一个小范围,如图中所示。你知道我会怎样做到吗?或者,如果为了保持角度在360度内而额外采取措施,还是会增加180个工作吗? – Ruffy 2012-04-04 11:48:45
我编辑答案来绘制解决方案。 – Black 2012-04-04 12:38:54