2013-02-28 50 views
0

我有客觀-花栗鼠定製的二維物理引擎的邊界問題:如何使用objective-chipmunk物理引擎製作自定義空間邊界?

[space addBounds:self.view.bounds thickness:10.0f elasticity:0.5f friction:0.5f layers:CP_ALL_LAYERS group:CP_NO_GROUP collisionType:borderType]; 

我如何自定義界限? (我要的是模擬在整個屏幕的一部分物理對象)

我試着使用:

[space addBounds:CGRECMake(50.0f,50.0f,100.0f,100.0f) thickness:10.0f elasticity:0.5f friction:0.5f layers:CP_ALL_LAYERS group:CP_NO_GROUP collisionType:borderType]; 

不過,這並不在所有的工作......

任何回答將不勝感激!

回答

1

這是一個相對簡單的方法。我真的只是爲你添加4個細分形狀,並設置它們的碰撞屬性和位置。它被添加爲Objective-Chipmunk中的庫例程,因爲它是所有遊戲中一半最終做的事情之一。

這是一個相對簡單的方法。我真的只是爲你添加4個細分形狀,並設置它們的碰撞屬性和位置。它被添加爲Objective-Chipmunk中的庫例程,因爲它是所有遊戲中一半最終做的事情之一。

原始來源如下。它只是在框的所有角落之間添加分段。

static ChipmunkStaticSegmentShape * 
boundSeg(ChipmunkBody *body, cpVect a, cpVect b, cpFloat radius, cpFloat elasticity,cpFloat friction, cpLayers layers, cpGroup group, cpCollisionType collisionType) 
{ 
    ChipmunkStaticSegmentShape *seg = [ChipmunkStaticSegmentShape segmentWithBody:body from:a to:b radius:radius]; 
    seg.elasticity = elasticity; 
    seg.friction = friction; 
    seg.layers = layers; 
    seg.group = group; 
    seg.collisionType = collisionType; 

    return seg; 
} 

- (void)addBounds:(CGRect)bounds thickness:(cpFloat)radius 
    elasticity:(cpFloat)elasticity friction:(cpFloat)friction 
    layers:(cpLayers)layers group:(cpGroup)group 
    collisionType:(cpCollisionType)collisionType; 
{ 
    cpFloat l = bounds.origin.x - radius; 
    cpFloat r = bounds.origin.x + bounds.size.width + radius; 
    cpFloat b = bounds.origin.y - radius; 
    cpFloat t = bounds.origin.y + bounds.size.height + radius; 

    [self add:boundSeg(_staticBody, cpv(l,b), cpv(l,t), radius, elasticity, friction, layers, group, collisionType)]; 
    [self add:boundSeg(_staticBody, cpv(l,t), cpv(r,t), radius, elasticity, friction, layers, group, collisionType)]; 
    [self add:boundSeg(_staticBody, cpv(r,t), cpv(r,b), radius, elasticity, friction, layers, group, collisionType)]; 
    [self add:boundSeg(_staticBody, cpv(r,b), cpv(l,b), radius, elasticity, friction, layers, group, collisionType)]; 
} 

此外,當你說它根本不起作用時,你是什麼意思?就像在那裏似乎沒有任何界限,或者它們沒有出現在你期望的位置?你確定你的渲染座標是你期望的嗎? - (void)addBounds:(CGRect)bounds thickness:(cpFloat)radius

此外,當你說它根本不起作用時,你是什麼意思?就像在那裏似乎沒有任何界限,或者它們沒有出現在你期望的位置?你確定你的渲染座標是你期望的嗎? - (void)addBounds:(CGRect)邊界厚度:(cpFloat)半徑

+0

您是否足夠友善地發佈樣本spinet在這裏指導我解決這個問題。你應該看到我的帖子在花栗鼠論壇。我的疑問是什麼是細分形狀(任何示例?)和addBounds的含義是什麼? – 2013-03-01 05:22:22

+0

對不起,我是新來的Objective-C和花栗鼠:-) – 2013-03-01 05:22:59

+0

此外,如果你能引導我完成花栗鼠空間,花栗鼠片段空間(牆)和花栗鼠身體的設置,我害怕我在代碼中做了一些愚蠢的事情。 – 2013-03-01 05:26:21