По сути, для подлинного ощущения понга вам нужно реализовать свою физику.
Классические игры обычно реализуют физику как простую 2D скорость и положение (и может быть ускорение), а затемподделка всего остального.
(Стоит отметить, что даже современные игры подделывают столько, сколько они могут себе позволить. Не стоит реализовывать что-то нелегко, если вы можете сделать это простым способом и при этом получить тот же игровой процессчувствовать.)
"Поддельная" физика для понга должна быть довольно простой.Вот очень простой, не обязательно полный фрагмент упрощенной физики для вас:
Vector2 position;
Vector2 velocity;
protected override void Update(GameTime gameTime)
{
position += velocity * (float)gameTime.ElapsedGameTime.TotalSeconds;
if((IsInsideLeftBat(position) && velocity.X <= 0)
|| IsInsideRightBat(position) && velocity.X >= 0)
{
velocity.X = -velocity.X; // Bounce the other way
// To change things up, maybe you can change velocity.Y too.
}
// And of course handle the ball going out of the play field, scoring, etc...
}
Теперь, скажем, вам действительно нужна настоящая физика в вашей игре.Игра в понг с реальной физикой может быть забавной (на самом деле кто-то уже сделал это, даже real-er ).
То, что я сказал о "подделке"все еще применяется.Физика в играх, как правило, больше связана с настройкой вещей, чтобы они чувствовали себя лучше, чем реальный реализм.Возможно, вам нужно увеличить коэффициент отказов до 1,1 и, возможно, добавить некоторое линейное сопротивление мячу, чтобы он не вылетел из-под контроля?
(Или, если у вас возникли проблемы с переносом мяча в другойсторону, попробуйте уменьшить линейное сопротивление.)
На самом деле, что более вероятно для "главного героя" в игре - вы хотите оставить его в симуляторе физики, чтобы он мог взаимодействовать с вещами (возможно, ваше игровое полезавалены препятствиями - это может быть весело) - но вы хотите, чтобы завершено контролировало его движение.
Чтобы сделать это просто, после запуска обновления вашего физического движка, зайдите и измените любоеценности, которые вам не нравятся!В случае Понга это может быть что-то простое, например, сбросить скорость мяча, чтобы он двигался с постоянной скоростью в каждом кадре.Я предполагаю, что вы уже делаете что-то подобное для весла - чтобы установить их положение в каждом кадре.
(Я использовал этот подход, когда я сделал платформер на физическом движке .)
Другим альтернативным способом подделки вещей может быть добавление обработчика столкновений к лопастям, который устанавливает скорость мяча именно так, как вам нравится.