В настоящее время я являюсь разработчиком флеш-игр. Я начал писать игры для iphone, используя движок cocos 2d. Я реализовал отдельную теорему Axis для обнаружения столкновений, которая работает отлично. Все полигоны нарисованы следующим образом в openGl.
Теперь я пытаюсь применить гравитацию к этому блоку 16x16 после многих поисков. Я нашел этот урок http://www.seinia.com/tutorials/Bounce/ и реализовал то же самое в цели C.
Проблема в том, что после того, как квадрат останавливается, он продолжает подпрыгивать вверх / вниз в долях. Я много пытался это исправить, но я не мог контролировать это крошечное движение. У меня никогда не было такой проблемы во вспышке, но здесь плавающее значение сильно влияет на положение квадрата.
Пожалуйста, дайте мне знать, как написать такую проблему, любой ссылочный URL будет полезен. Ценим вашу помощь. Спасибо!
0,16 16,16
------------
| |
| |
| |
| |
------------
0,0 16,0
Объективный код C
if (square.points[0].y <= 0.1f) {
velocity.vy *= -bounce;
[square restInPeace:[Vector2D createVectorWithComponentX:velocity.vx Y:8.0f]];
// landed
if (fabs(velocity.vy) < 0.9f) {
velocity.vy = 0.0f;
[square restInPeace:[Vector2D createVectorWithComponentX:velocity.vx Y:8.0f]];
isLanded = YES;
}
}
Перевести объект
-(void) translateVelocity:(Vector2D*)velocity
{
// The center as well as all of the vertices need to be
// accommodated.
center.x += velocity.vx;
center.y += velocity.vy;
for(int i=0; i < count; i++)
{
points[i].x += velocity.vx;
points[i].y += velocity.vy;
////NSLog(@"velocity %f %f",points[i].x , points[i].y);
}
}