2013-12-18 2 views
-1

У меня проблема с моим прыжком в XNA.
Персонаж слегка прыгает, но я все равно могу подняться на экран, прежде чем вернуться. Это дает эффект, что его не прыжок и я двигался влево, правильно работаю, и они не работают, если игрок не находится в воздухе.
То, что я хочу, это переход типа mario, где пользователь нажимает и может перемещаться влево или вправо, пока игрок не упадет.Перейти не останавливается XNA

Может кто-нибудь помочь мне в этом.

Вот мой код: (Что в обновлении игрока)

public void handleInput(GameTime gameTime) 
{ 
    this.Transform.MoveIncrement = Vector2.Zero; 
    float timeBetweenUpdates = 0.25f * gameTime.ElapsedGameTime.Milliseconds; 

    if (game.KeyboardManager.isKeyDown(Keys.Left)) 
    { 
     this.Transform.MoveIncrement += -this.Transform.Look; 
     this.Transform.IsMoved = true; 
    } 
    else if (game.KeyboardManager.isKeyDown(Keys.Right)) 
    { 
     this.Transform.MoveIncrement += this.Transform.Look; 
     this.Transform.IsMoved = true; 
    } 
    if (game.KeyboardManager.isKeyDown(Keys.Up)) 
    { 
     // this.Transform.MoveIncrement = -Vector2.UnitY * timeBetweenUpdates; 
     this.Transform.moveBy(-Vector2.UnitY); 
     this.Transform.IsMoved = true; 
     this.hasJumped = true; 
    } 
    else if(timeBetweenUpdates > 450) 
    { 
     hasJumped = true; 
    } 
    else if (hasJumped == true) 
    { 
     this.Transform.MoveIncrement = Vector2.UnitY * timeBetweenUpdates; 
     this.Transform.IsMoved= true; 
    } 
} 
+0

Корректировка вашего поста; его трудно читать. Я не могу сказать, хотите ли вы, чтобы ваш персонаж мог двигаться, когда он прыгает. –

+0

Боюсь, что это обновление не очень помогает. Кажется, ваша проблема в том, что ваш персонаж поднимается, а затем вниз, когда вы прыгаете. Разве это не должно произойти? –

+0

отредактировал сообщение там :) –

ответ

0

У вас есть способ сказать, если ваш игрок находится на земле? если вы это сделаете, чем просто включить это в свой if.

// insert your own way of telling whether or not the player is jumping 
//or if he is on the ground 
bool playerIsOnGround = this.YPosition = 0; 

if (isPlayerOnGround && game.KeyboardManager.isKeyDown(Keys.Up)) 
{ 
+0

Нет, единственное, что у меня есть, это то, что я могу сказать, когда вернуться. –

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