Я только начал заниматься разработкой игр и XNA, следовал руководству и решил попытаться добавить ограниченную область для пола.В этом уроке спрайт мог свободно перемещаться, и я хотел, чтобы у него была точка остановки, поэтому я добавил инструкцию к части метода ввода
if (aCurrentKeyboardState.IsKeyDown(Keys.Down) == true)
{
if (this.Position.Y == 420)
{
MOVE_DOWN = 0;
mDirection.Y = MOVE_DOWN;
}
else
{
mSpeed.Y = PLAYER_SPEED;
MOVE_DOWN = 1;
mDirection.Y = MOVE_DOWN;
}
}
MOVE_DOWN - моя переменная для изменения y, если= 0, движения нет, 1 - вниз, -1 - вверх.это работало, только если позиция границ (420) была равна позиции, в которой мой спрайт начинался, за исключением того, что он не работает.
Я думаю, что это потому, что позиция не обновляется правильно.Я не знаю, я много чего пробовал, и я довольно новичок в разработке XNA и игр.Любая помощь будет принята с благодарностью.
Вот метод обновления для моего спрайта игрока
public void Update(GameTime theGameTime)
{
KeyboardState aCurrentKeyboardState = Keyboard.GetState();
UpdateMovement(aCurrentKeyboardState);
mPreviousKeyboardState = aCurrentKeyboardState;
base.Update(theGameTime, mSpeed, mDirection);
}
, а вот обновление для базового класса
public void Update(GameTime theGameTime, Vector2 theSpeed, Vector2 theDirection)
{
Position += theDirection * theSpeed * (float)theGameTime.ElapsedGameTime.TotalSeconds;
}