2014-01-15 123 views
5

首先,我要感謝本網站上的每位用戶,因爲我總是在這裏找到解決方案,它非常有幫助!iOS - bodyWithPolygonFromPath:Body與路徑相同,但碰撞無法正常工作

我正在嘗試使用SpriteKit製作像Xonix,Bix或Jezzball一樣的遊戲。無論如何,我有一個球彈跳在牆上,我試圖阻止它不能去的地方,這些障礙是由CGPathref(用戶使其運動產生的)製成的。創建skspritenode的物理體,它正在工作,但並非總是如此。我已經下載了YMCPhysicsDebugger來查看身體的內容,並且在任何情況下都很好,但是我已經看到,當我在CGPath上有超過4分時,球不會與整個身體發生碰撞,它只碰撞一個較小的區域..我試過並搜索了很多沒有任何結果..我試圖使逆時針CGPath的點,它不工作,即使在另一側..

我複製你創建SKSpriteNode的代碼,但我懷疑這將是有用的,我認爲這個問題是我的觀點,也許我需要在physicsbody用多邊形

SKSpriteNode *zone = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:CGSizeMake(50, 50)]; 
zone.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path.CGPath]; // 1 
zone.physicsBody.friction = 0.0f; 
zone.physicsBody.restitution = 0.0f; 
zone.physicsBody.linearDamping = 0.0f; 
zone.physicsBody.allowsRotation = NO; 
zone.physicsBody.categoryBitMask = wallsCategory; 
zone.physicsBody.dynamic = NO; // 2 
[self addChild:zone]; 
如何工作的詳細解釋

這裏是我的「遊戲」的兩張照片,t他第一個工作,球就反彈回來。第二個不像它應該那樣工作,只有上部被檢測到碰撞。

http://hpics.li/86a69e2

http://hpics.li/e16d18e

我也試着當球在更新功能進入障礙手動使反彈反對它來檢測,但當然,這不是真正的工作。再加上我的數學研究是不是很好笑

for(SKSpriteNode *zone in zonesTab) 
{ 
    UIBezierPath *path = [zoneesTab objectAtIndex:i]; // Array of UIBezierPath for the obstacles 
    if(CGPathContainsPoint(path.CGPath, NULL, ball.frame.origin, FALSE)) 
    { 
     ball.physicsBody.velocity=CGVectorMake(ball.physicsBody.velocity.dx*-1, ball.physicsBody.velocity.dy*-1); 
     NSLog(@"Touches iT"); 
    } 
    i++; 

} 

我也想過做一些SKSpriteNode每次一個CGPath已經4點多了,但我真的不知道該怎麼辦,在數學..

無論如何,這是一篇很長的文章,我希望你們中的一些人能夠閱讀並理解這一切(抱歉我的英文,我是法國人!),最重要的是,能夠幫助我!

非常感謝您

回答

10

在第一張截圖的形狀是凸的,但在第二個屏幕的形狀是凹的。

物理多邊形形狀需要凸起才能正常工作。你可以做以下兩件事之一:

  • 創建兩個節點和兩個物體,其各個形狀是凸的,但它們一起形成凹形。這些機構可以是動態的。您可能需要將它們設置爲靜態或將它們與剛性距離接點連接在一起,否則確保它們不會分開。
  • 使用bodyWithEdgeLoopFromPath:bodyWithEdgeChainFromPath:能夠產生凹面碰撞形狀。這些物體不會動態,並且無法自行移動,但它們是靜態遊戲場的任意碰撞形狀的完美解決方案。
+0

哦,我的上帝!非常感謝 !!!爲什麼我以前沒有嘗試過這麼多小時......但我通常在這樣簡單的事情上遇到麻煩..無論如何,非常感謝你:) PS:我的英語不好,因爲我認爲凹表示「有一個洞裏面」,它誤導我之前! – user3198930

+0

也混合了許多凹凸。 ;)要記住的一種方法是,在末尾有一個「x」,其兩條線標記形成矩形的四個角,而矩形爲凸形。 – LearnCocos2D

+1

有關「洞穴進入」的凹陷嗎? – fuzzygoat