這是一個相對簡單的方法。我真的只是爲你添加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)半徑
您是否足夠友善地發佈樣本spinet在這裏指導我解決這個問題。你應該看到我的帖子在花栗鼠論壇。我的疑問是什麼是細分形狀(任何示例?)和addBounds的含義是什麼? – 2013-03-01 05:22:22
對不起,我是新來的Objective-C和花栗鼠:-) – 2013-03-01 05:22:59
此外,如果你能引導我完成花栗鼠空間,花栗鼠片段空間(牆)和花栗鼠身體的設置,我害怕我在代碼中做了一些愚蠢的事情。 – 2013-03-01 05:26:21