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