双跳的问题
Issue with double jumping
本文关键字:问题 更新时间:2023-10-16
我真的不知所措。我一直坐在电脑前,试图弄清楚为什么这不起作用。我正在尝试禁用玩家在空中跳跃的能力。但是由于某种原因,玩家仍然可以双跳,同时如果玩家尝试第三次或第四次跳跃等等。它不会,我的代码有效。但是为什么我还能跳双跳呢?我想不通。感谢所有帮助。
#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;
}
这可能是也可能不是这个问题的合适位置。 (也许 gamedev.stackexchange.com?
然而,在我看来,你的问题是你做事的顺序。在重力部分的"else if"中,如果您的玩家已到达某个垂直位置,您将jumping
设置回 false。 但是,您只是在代码的后面移动播放器。 因此,当玩家跳跃时,jumping
被设置为 true,但随后立即再次设置为 false,因为他们还没有移动(他们还在地上(。
将垂直位置的检查放在player.move()
之后。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题