我有一個花栗鼠的身體,在空間中的形狀。我正在從空間中移除身體,以便我可以定位它,並且不會由於重力等原因而跌落。我需要能夠使這個身體移動,所以我沒有將它變成靜態的。將花栗鼠身體移動到雪碧位置
我需要身體根據場景中的Cocos2D精靈的位置+偏移來更新它的位置。
我設置機構位置:
collShape->體佩> P = collSprite.position; - 這似乎不起作用,不編譯錯誤,它運行,但碰撞形狀不移動。
是否可以根據我的tick方法中的精靈位置移動碰撞體?
我有一個花栗鼠的身體,在空間中的形狀。我正在從空間中移除身體,以便我可以定位它,並且不會由於重力等原因而跌落。我需要能夠使這個身體移動,所以我沒有將它變成靜態的。將花栗鼠身體移動到雪碧位置
我需要身體根據場景中的Cocos2D精靈的位置+偏移來更新它的位置。
我設置機構位置:
collShape->體佩> P = collSprite.position; - 這似乎不起作用,不編譯錯誤,它運行,但碰撞形狀不移動。
是否可以根據我的tick方法中的精靈位置移動碰撞體?
你在做什麼應該是可能的。
最乾淨的方法是創建一個派生自CCSprite的新類,然後重寫setPosition方法來更新Sprite的主體。
這樣做的好處是,無論何時,當精靈的位置發生改變時(無論是由你還是任何動畫序列),Chipmunk主體將自動更新。
-(void) setPosition:(CGPoint) p{
[super setPosition:p];
if (self->body != nil) {
self->body->p.x = p.x;
self->body->p.y = p.y;
//Note: also call cpSpaceRehash to let Chipmunk know about the new position
}
}
當你調用cpSpaceStep,主動形狀的列表中創建和cpShapeUpdateFunc被每一個信息。該功能如下所示:
void
cpShapeUpdateFunc(cpShape *shape, void *unused)
{
cpBody *body = shape->body;
cpShapeUpdate(shape, body->p, body->rot);
}
...它將形狀更新爲它所附着的身體位置和旋轉。如果這沒有發生,也許你的形狀沒有被添加到空間或沒有被添加到身體?