Salto de jogo de plataforma 2D

7

Atualmente, estou escrevendo um jogo no XNA por diversão que usa C #. Eu tenho meus sprites carregados e quando o personagem se move para a direita, ele parece estar correndo para a direita e quando ele se move para a esquerda, ele parece que está correndo para a esquerda.

Estive procurando em todos os lugares um bom exemplo de codificação de como criar uma habilidade de salto. Eu li todas as coisas de física que posso suportar e não ajuda quando não consigo descobrir como usar a barra de espaço para pular, mas não consigo impedi-las de usar o espaço, pule novamente até que elas pousem.

Bradley Kreuger
fonte

Respostas:

8

Crie uma variável, canJump e defina-a como true sempre que seu sprite estiver em uma superfície saltável. Se você estiver usando uma velocidade y negativa em cada quadro, permitindo que a detecção de colisão o impeça de cair no chão, você poderá definir o canJump sempre que os jogadores sprite colidirem com o terreno. Sempre que o jogador pula, basta definir canJump como false e permanecerá assim até que a detecção de colisão o altere novamente

Mike B
fonte
3

Defina isso:

int gravity = 2, jump=50, spX=20,spY=20, surface=200;
bool click = false;
bool canJump = true;
Texture2D sprite;
MouseState m;

---Atualizar---

m = Mouse.GetState();

        if (spY < surface)
        {
            spY += gravity;
        }
        else
        {
            if (spY == surface)
            {
                canJump = true ;
            }
        }
        if (m.LeftButton == ButtonState.Pressed)
        {
            click = true;
        }
        if ((click) && (m.LeftButton == ButtonState.Released))
        {
            if (canJump)
            {
                click = false;
                spY -= jump;
                canJump = false;
            }
        }

--- EndUpdate ---

---Desenhar---

spriteBatch.Draw(sprite,new Vector2(spX,spY),Color.White);

--- EndDraw ---

Eu apenas tentei, funciona bem

Zukki
fonte
2

Dê uma olhada neste tutorial: http://www.xnadevelopment.com/tutorials/thewizardjumping/thewizardjumping.shtml O site também está cheio de tutoriais realmente úteis relacionados ao XNA.

Jesse Emond
fonte
XNADevelopment é um ótimo site.
The Duck comunista
Obrigado que o site era o que eu estava procurando. Agora que entendi e funciona da maneira que quero também, posso lidar com a gravidade e o que não.
Bradley Kreuger
0

O que eu fiz no passado é fazer com que seu personagem mantenha uma velocidade em cada direção. Quando quero um salto, simplesmente digo vel_y - = (velocidade do salto aqui). E é claro que tenho uma gravidade constante.

Um outro recurso realmente interessante que você deve considerar na implementação é o conceito completo de "quanto mais tempo você pressionar o botão, mais alto". Eu odeio quando os jogos saltam apenas uma única variável constante e não me permitem ter algum sentimento de controle.

Ah, e saltos na parede são legais =]

ultifinito
fonte