2014-04-06 177 views
0

我正在研究一個新的項目,我完全卡在主角動作上。Sprite Kit物理上的字旋轉 - 碰撞和重力Sprite-kit

這個鏈接的圖片說明了我的情況 http://www.chr.to/stuck.jpg

我有一個世界(黑色)的字符(紅色)和障礙物

人物和世界是自 的孩子的障礙是一個世界的孩子

我的目標是將角色轉移到世界各地,但它必須始終處於相同的位置,只有世界必須轉向它的腳下。

要做到這一點,我的性格方向相反的方向旋轉世界,效果是完美的(我得到的方向操縱桿)

-(void)update:(CFTimeInterval)currentTime { 

rotation = rotation + input; 
wordTest.zRotation = rotation; } 

最大的問題是,當我發現了一個對象世界。

角色和障礙物都是物理對象。

當角色遇到障礙物時,由於旋轉繼續,它無法保持其在屏幕中間的位置。

也許這不是最好的辦法,我必須找到停止旋轉的方法...... 或者你有更好的建議嗎?

感謝你們

+0

您需要將角色的collisionBitMask設置爲零,並處理來自聯繫人委託的旋轉 – ZeMoon

+0

但是我需要物體之間的物理接觸......例如,如果角色在障礙物上跳躍 –

+0

您想阻止世界從旋轉角色是否被物體擊中? – ZeMoon

回答

0

建立一個BOOL標誌稱爲canRotate,並用它來檢查是否旋轉必須在-update方法被應用。

-(void)update:(CFTimeInterval)currentTime 
{ 
    if (canRotate) 
    { 
     rotation = rotation + input; 
     wordTest.zRotation = rotation; 
    } 
} 

設置此標誌爲YES在-init方法,並且當該字符與障礙物之間的接觸在-didBeginContact被觸發時,該標誌設置爲NO。