سؤال

ها هي مشكلتي. لديّ جسم صلبة من Chipmunk (يمكن أن يقف الصودا) وأريد تغيير مركز الثقل إلى أسفل الكائن حتى يمكن أن يسقط على جناحه عندما يتم تطبيق قوة على الجزء العلوي.

هل أنا على الطريق الصحيح؟

1) لسبب ما ، أواجه مشكلة في تحديد مركز الثقل في الجسم لقيمة محددة. أي شخص لديه حل سهل من فضلك؟

2) ماذا عن مركز الثقل في سبريت؟ هل أحتاج إلى تغييره أيضًا؟ إذا كان الأمر كذلك ، كيف؟

شكرا لك لتوضيح ذلك.

يوهان ت.

هل كانت مفيدة؟

المحلول

لا يهم !

أنا أجيب على أسئلتي الخاصة منذ أن كان قبل 16 ساعة ، وعلي أن أجدها بمفردي (نعم ، استغرق الأمر وقتًا طويلاً لمعرفة ذلك ، يا له من مضيعة للوقت). لحسن الحظ بالنسبة لك ، سأشارك الحل ، لذا لن تضطر إلى قضاء هذه الساعات الطويلة في التعرف.

1) لسبب ما ، أواجه مشكلة في ضبط مركز ثقل الجسم بقيمة محددة. أي شخص لديه حل سهل من فضلك؟

الإجابة: لا يمكنك تغيير مركز ثقل الجسم لأنه في عالم حقيقي محاكاة ، مركز الثقل غير قابل للتعديل, ، ما لم تكن بالفعل تتحول إلى الكائن! ! !

طريقة القيام بذلك ، هي عدم إنشاء جسم ذو شكل "صندوق". يجب عليك إنشاء الكائن باستخدام الرؤوس بحيث يمكن أن يتأثر بأي نوع من أنواع الفيزياء ، وليس فقط الحركة.

فيما يلي الرمز الذي استخدمته لإنشاء مربع حول الكائن:

int num = 4;
cpVect verts[] = {
    cpv(-15,-15),
    cpv(-15, 15),
    cpv( 15, 15),
    cpv( 15,-15),
};
body = cpBodyNew(1.0f, cpMomentForPoly(1.0f, num, verts, cpvzero));
body->p = cpv(-280, 240);
cpSpaceAddBody(space, body);
shape = cpPolyShapeNew(body, num, verts, cpvzero);
shape->e = 0.0f; shape->u = 1.5f;
shape->collision_type = 1;
cpSpaceAddShape(space, shape);

2) ماذا عن مركز الثقل في العفريت؟ هل أحتاج إلى تغييره أيضًا؟ إذا كان الأمر كذلك ، كيف؟

استخدم هذه الطريقة:

[sprite setTransformAnchor:ccp(27,54)];

ولكن تذكر أن الإحداثيات تبدأ في الزاوية السفلية اليسرى من الشاشة. لكن لن تضطر إلى لمس العفريت إذا تعاملت مع فيزياء الجسم بشكل صحيح.

حظا سعيدا الآن!

يوهان ت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top