我已經遍尋搜索,並且無法找到這個看似常見的問題的答案,令人驚訝。我目前面臨的問題是檢查球員是否面對敵人,如果是球員的視野範圍(可調整),並且如果它在該範圍內,則以最近的安全方向移動。檢查兩個物體是否面臨海誓山盟
這裏有一個畫面: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