2014-02-20 2 views
0

Я новичок в программировании игр, но меня интересует этот домен; теперь я работаю над небольшой игрой для своей курсовой работы. Я использовал некоторые идеи из Интернета, чтобы заставить моего героя прыгать; код работает, но после того, как я нажимаю первый раз, герой прыгает и не возвращается к своей позиции, он остается в верхней части экрана. Пожалуйста, помогите мне сделать моего героя, а затем вернитесь на его исходное положение. Если я снова коснусь места, он прыгает, но прыгает туда, в верхней части экрана.Пересказ персонажа в XNA

public void Initialize() 
{ 
    startY = position.Y; 
    jumping = false; 
    jumpspeed = 0; 
} 

public void Update(GameTime gameTime) 
{ 
    KeyboardState keyState = Keyboard.GetState(); 
    rectangle = new Rectangle(currentFrame * frameWidth, 0, frameWidth, frameHeight); 
    origin = new Vector2(rectangle.Width/2, rectangle.Height/2); 
    AnimateRight(gameTime);//calling AnimateRight function to animate heroes sprite 
    if (jumping) 
    { 
     position.Y += jumpspeed; 
     jumpspeed += 1; 
     if (position.Y >= startY) 
     { 
      position.Y = startY; 
      jumping = false; 
     } 
    } 
    else 
    { 
     if (keyState.IsKeyDown(Keys.Space)) 
     { 
      jumping = true; 
      jumpspeed = -14; 

     } 
    } 
} 

ответ

1

Вы должны установить startY при нажатии Space:

if (keyState.IsKeyDown(Keys.Space)) 
{ 
    jumping = true; 
    jumpspeed = -14; 
    startY = position.Y; 
} 
0

Я знаю, что вы новичок, но я реплицировать систему движения, которая работала замечательно, если вы можете понять это, here является ссылка, чтобы увидеть движение игрока в действии, и here - это веб-сайт для него. Если вы хотите скачать его here это ссылка.

Это движение игрок использует пару важных вещей,

Первое:

Внутри класса игрока есть метод, называемый public Player, да, вы делаете метод, который совпадает с именем класса. При этом вы можете передавать информацию из класса Game1 классу Player. Таким образом, вы можете отправить текстуры игрока, положение, скорость, ЭСТ ...

Второе:

Внутри метода игрока информацию, которая называется сверх от Game1 класса необходимо собирать и хранить в Player классе , Поэтому, если вы хотите перенести текстуру своего игрока, вам нужно будет сделать следующее.

Создайте игрок текстуру и создать ссылку, которая позволит вам создать ссылку на Player класса: «игрок игрока»

Texture2D personTexture;

Тогда в содержании нагрузки вам нужно призвать personTexture и поставить его в функцию игрока:

personTexture = Content.Load <Texture2D>("Person");

player = new Player(personTexture);

Теперь, текстуры теперь в стороне метод игрока в Player классе теперь будет хранить его в Player классе, так что вы можете использовать его, добавить Texture2D Texture к классу игрока введите следующие данные:

public Player(Texture2D Texture) 
{ 
    this.Texture = Texture;//this.Texture is the one you create in side the 
    Player class, the other is the Texture you stated 
} 

Теперь вы сделали и сможете использовать свою текстуру в этом классе.

Надеюсь, это поможет вам понять, как создать свой прыгающий игрок.

Смежные вопросы