2015-04-26 1 views
0

В Monogame, я пытаюсь сделать так, что, когда я нажимаю клавишу пробела, изображение будет отображаться, а затем оно начнет двигаться. У меня это так, что мяч появляется, когда я нажимаю на место, но мяч не начинает двигаться. Любая помощь приветствуется.Как нарисовать и переместить изображение?

Главного класса

if (keyState.IsKeyDown(Keys.Space) && 
      previousKeyboardState.IsKeyUp(Keys.Space)) 
     { 
      //ball.Space(); 
      startBall(); 
     } 

     if (keyState.IsKeyDown(Keys.Escape) == true) 
     { 
      this.Exit(); 
     } 

     previousKeyboardState = keyState; 

    } 

    public void startBall() 
    { 
     foreach (Ball ball in balls) 
     { 
      if (!ball.Alive) 
      { 
       ball.Alive = true; 
       ball.Position = new Vector2(300, 300); 
       ball.Velocity = new Vector2(10, 10); 
       return; 
      } 
     } 
    } 

Космический метод в Бале класс

public virtual void Idle() 
    { 
     Velocity = Velocity; 
    } 

    public void Space() 
    { 
     if (Position.X < 0) 
     { 
      position.X = 0; 
      velocity.X = -InitialVelocity.X; 
     } 

     if (Position.Y < 0) 
     { 
      position.Y = 0; 
      velocity.Y = -InitialVelocity.Y; 
     } 

     //ballStart = true; 
     //position += Velocity; 
    } 
+0

Как вы связывание положения класса шарика к изображению на вашей форме? –

+0

Логическая отладка - это ключ. Мы не можем сделать это для вас с предоставленным кодом. Я также не предлагаю вам разместить здесь весь свой код. Попробуйте выяснить, почему 'InitialVelocity' равен 0. – bytecode77

+0

@PraveenPaulose в моем методе Draw. У меня это так, что привлекает Бал, когда он жив. – Kevin

ответ

0

мяч не двигается, потому что вы установите скорость, но не переместить его.

Я вижу, что вы пытались сделать позицию + = скорость, которая, в конечном счете, вам нужно будет сделать.

Ваш класс Ball должен иметь метод обновления. В вашем методе обновления переместите шар, добавив скорость в позицию или нарисуйте прямоугольник. В вашем методе обновления игры вызовите метод ball.Update и передайте ему GameTime.

Так что-то вроде этого:

//Ball class 
public void Update(GameTime gameTime) 
{ 
    position.X += (int)(velocity.X * gameTime.ElapsedGameTime.Milliseconds); 
    position.Y += (int)(velocity.Y * gameTime.ElapsedGameTime.Milliseconds); 
}