的intersectNode方法是用於對有很多每秒迭代設備快速運行優化修復它。由於這個原因,它實際上是基於數學「估計」了碰撞,有時在幾個像素的邊緣出現錯誤,特別是當我們談論PNG的方角時。
我也有過這個問題,因爲我用圓圈計算了圓圈之間的距離作爲第二次驗證。
所以,你可以做的是自定義驗證INSIDE intersectsNode,如果情況。假設你處理正方形,你可以驗證交叉節點之後的x或y碰撞。它可能是這樣的:
if([[self playerSpriteNode] intersectsNode: [self pSKLabelNode]]){
if(distance between x1 and x2 < size1.width/2 + size2.width/2 || distance between y1 y2 < size1.height/2 + size2.height/2){
//Your code goes here
}
}
請注意,我們比較中央x距離和每個寬度總和的一半。這只是一個適用於廣場和大多數通用小精靈的例子。
我想指出的是,雖然intersectsNode稍微不準確,但爲了快速運行您的遊戲,需要這樣做,因爲每次更新的完美且精確的計算可能對您的設備非常詳盡。 因此,如果您進行自定義驗證,請在intersectsNode返回true之後始終調用它作爲第二次驗證,而不是唯一的驗證。
上面羅馬提供的答案几乎不代表我說的,代碼更短;我只想留下解釋爲什麼。
旋轉的對象之一? –
您可以嘗試繼承SKLabelNode並覆蓋「calculateAccumulatedFrame」方法。 –