C # XNA Заставить объект оставаться в границах - PullRequest
0 голосов
/ 20 октября 2010

В настоящее время у меня есть метод, который проверяет, не выхожу ли я за пределы либо с верхней, либо с нижней стороныСам объект является шаром, и у меня есть вопрос о том, как правильно отскочить от краев шара?Как мне это сделать?

// Поведение не совсем то, что я хочу.

if ( InsideOfBounds )
{
     Vector3 mCenter = Ball.getCenter();
     Vector3 normalizeV = tempCenter;
     normalizeV.Normalize();
     mHeroBall.setVelocity(-testSpeed * normalizeV);
}

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Я могу предоставить вам пример из Breakout-клона, написанного на XNA:

Ball.cs

По сути, вы переворачиваете правильную составляющую скорости, чтобы сделать «идеальный» отскок. При желании вы можете добавить трение или упругость, умножив на коэффициент, например, 0,95 или 1,1, чтобы изменить скорость вашего мяча.

0 голосов
/ 20 октября 2010

Когда вы обновляете положение вашего объекта (шара), вы хотите проверить, не выходит ли новое значение за пределы (и какая из них верхняя \ нижняя или левая \ правая). Если это действительно выходит за границы, переверните правильный элемент в вашем векторе скорости.

пример: если мяч прошел левую границу, то BallSpeed.X = -BallSpeed.X

не забудьте обновить позицию мяча с новой скоростью, а не со старой в этой точке, иначе он улетит с экрана для текущего кадра (если это не проблема).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...