бурундук iphone cocos2d - центр тяжести

Вот моя проблема. У меня есть твердое тело бурундука (стоящая банка из-под газировки), и я хочу изменить его центр тяжести на нижнюю часть объекта, чтобы он мог упасть на бок, когда сила приложена к его верхней части.

Я на правильном пути?

1) По какой-то причине у меня не получается установить центр тяжести тела на определенное значение. У кого-нибудь есть простое решение, пожалуйста?

2) А как насчет центра тяжести спрайта? Мне тоже надо менять? Если да, то как?

Спасибо, что разъяснили это.

Йоханн Т.


person Yohann T.    schedule 06.09.2009    source источник


Ответы (1)


Неважно !

Я отвечаю на свои вопросы, так как это было 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)];

Но помните, что координаты начинаются в левом нижнем углу экрана. Но вам не придется трогать спрайт, если вы правильно справитесь с физикой тела.

Удачи сейчас!

Йоханн Т.

person Yohann T.    schedule 07.09.2009