我正在用iOS編寫cocos2d 版本3,通過以下this tutorial。物理世界的界限
這真的很基礎。在應用程序中的一個CCScene
,我們創建了一個世界:
_physicsWorld = [CCPhysicsNode node];
_physicsWorld.gravity = ccp(0,-100);
_physicsWorld.debugDraw = YES;
[self addChild:_physicsWorld];
,然後添加一個主角精靈與身體。
_protagonist = [CCSprite spriteWithImageNamed:@"player.png"];
_protagonist.position = ccp(self.contentSize.width/2, self.contentSize.height/2);
_protagonist.physicsBody = [CCPhysicsBody bodyWithRect:(CGRect){CGPointZero, _protagonist.contentSize} cornerRadius:0];
[_physicsWorld addChild:_protagonist];
現在,這是我的問題。主角精靈下降,因爲有一個{0; -100}重力矢量。但是,它永遠不會停止。所以它離開了屏幕,永遠不會再被看到。
這是正常的,我明白了。
所以我試圖創建一個世界邊界框,與4 CCPhysicNode
。舉例來說,最重要的一個大氣壓,將底線停止主角的秋天:
CCPhysicsNode* bottom = [CCPhysicsNode node];
bottom.contentSize = CGSizeMake(self.contentSize.width, 20);
bottom.position = ccp(0, self.contentSize.height);
bottom.physicsBody = [CCPhysicsBody bodyWithRect:(CGRect){CGPointZero, bottom.contentSize} cornerRadius:0];
[_physicsWorld addChild:bottom];
據我瞭解的cocos2d的花栗鼠整合,這應該:
- 創建一個cocos2d的物理節點在座標(0,1136)和大小的框架(320,20)
- 附加花栗鼠身體與物理節點的大小形狀(320,20)
- 檢測與主角的衝突(或應該嗎?它應該在相同的
collisionGroup
?)
屏幕上會發生什麼:什麼都沒有。是的,與debugDraw=true
,沒有任何東西被繪製。主角精靈像甘道夫一樣不斷下降,而不是像厄運一樣跌落到軸線無窮遠處(甚至更遠!)的深淵。
要更改,添加bottom CCPhysicsNode
不會改變一件事情。
幫助!
非常感謝回報。
你在哪裏?哦,你的意思是'試驗'。 :)我不太瞭解新的CCPhysicsNode和花栗鼠,但是你應該製作一個靜態的身體(邊緣,鏈條......),而不是一個動態的身體。動態的身體也會下降。 – LearnCocos2D
哦,是的!一個靜態的東西,是我需要的。不過,我不知道如何用新的API做到這一點。去環顧四周。 Btw:[pérégrination](http://en.wiktionary.org/wiki/p%C3%A9r%C3%A9grination) –
正如前面所說的「LearnCocos2D」,你需要創建一個靜態主體並將其添加到主物理節點。 physicsNode僅用於包含物理實體,它不可見。因此,儘量讓一個附有靜態物理體的精靈,然後將它添加到與主角相同的物理節點 – mursang