2015-10-02 56 views
1

我試圖確定一個點是否在被旋轉的節點內。我在我的場景中嘗試了以下代碼:SpriteKit:確定點是否在旋轉的節點內

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    /* Called when a touch begins */ 
    UITouch *touch = [touches anyObject]; 
    if ([self.cardNode containsPoint:[touch locationInNode:self.cardNode.parent]]) { 
     NSLog(@"HIT"); 
    } 
} 

但是看起來,節點框架仍然與不旋轉時相同。換句話說,旋轉節點之外的點(在節點未​​旋轉時位於節點中)被認爲是在其內部。 我也試過使用CGRectContainsPoint產生了相同的結果。

如何確定點是否在旋轉的節點中?

回答

0

如果你有兩個紋理,你可以使用兩個物理實體的.contactTestBitMask屬性,所以如果它們重疊,你會得到通知,你可以做任何你想做的事情,就是這樣! (注意,你不必做任何碰撞只是通知)在這裏你應該閱讀關於physicsBody財產和didBeginContact方法。

因爲由紋理創建的物理實體,所以如果它們旋轉意味着它的紋理旋轉,所以你會得到你想要的。

但在情況下,如果要檢查,如果你摸在某些節點的位置,這樣你就可以使用屬性

yourTouch.locationInNode(SOME_NODE) 

希望它能幫助!

+0

嗨,對不起,我不太明白。你能給我一個例子嗎?下面是正在發生的事情的圖片:http://imgur.com/Ixzw0bk白盒是一個旋轉的SKSpriteNode。紅點是我觸摸的地方,這導致我原始帖子中的代碼打印出「HIT」。謝謝 – PhobiK