【发布时间】:2019-04-15 18:22:36
【问题描述】:
我严重失语。我一直坐在电脑前试图弄清楚为什么这不起作用。我正在尝试禁用玩家在空中跳跃的能力。但是由于某种原因,玩家仍然可以进行二段跳,同时如果玩家尝试跳第三次或第四次等等。它不会,我的代码有效。但是为什么我仍然可以二段跳呢?我想不通。感谢所有帮助。
#include "pch.h"
#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
using namespace std;
int width = 800;
int height = 600;
int main()
{
sf::RenderWindow window(sf::VideoMode(width, height), "In Development");
window.setFramerateLimit(70);
window.setVerticalSyncEnabled(true);
sf::RectangleShape player;
player.setSize(sf::Vector2f(50, 50));
player.setFillColor(sf::Color::Cyan);
player.setPosition(width / 2, 0);
sf::Vector2f velocity(0, 0);
float gravity = .1;
bool jumping = true;
sf::Event event;
while (window.isOpen())
{
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::Space)
{
if (jumping == false)
{
velocity.y = -3.5;
jumping = true;
}
}
}
}
//Gravity
if (player.getPosition().y < height / 2)
{
velocity.y += gravity;
}
else if (player.getPosition().y >= height / 2)
{
player.setPosition(player.getPosition().x, height / 2);
jumping = false;
}
//Move the player
player.move(velocity);
window.clear(sf::Color::White); //Clear
window.draw(player);
window.display(); //Display
}
int pause; cin >> pause; //Pause the program
return 0;
}
【问题讨论】:
-
为什么一开始就跳是真的?
-
@user527987 否则你可以在开始时摔倒时跳跃。我不知道我为什么这样做哈哈