Бурундук iphone cocos2d - Центр тяжести
-
21-09-2019 - |
Вопрос
Вот моя проблема.У меня есть твердое тело бурундука (стоящая банка из-под газировки), и я хочу перенести его центр тяжести на нижнюю часть объекта, чтобы он мог упасть на бок, когда к его верхней части прилагается сила.
Я на правильном пути?
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)];
Но помните, что координаты начинаются в левом нижнем углу экрана.Но вам не придется трогать спрайт, если правильно обращаться с физикой тела.
Удачи сейчас!
Йоханн Т.