C++ SFML Sprite 不显示/工作

标签 c++ sfml 2d-games

我正在尝试制作一个程序,让一个红色方 block 从屏幕顶部掉落,玩家必须避开它。当我运行程序时,我可以看到并移动玩家(桨),但看不到敌人或“东西” Sprite 。请帮助我,因为我已尝试使用代码进行所有操作,但仍然无法正常工作:/

事物.h

#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
using namespace std;
#pragma once

class Thing
{
public:
void thingspawn(RenderWindow &gameDisplay, int &enemystartx, int &enemystarty, int &enemywidth, int &enemyheight, int &blockcolor)
{
    RectangleShape thing(Vector2f(enemywidth, enemyheight));
    thing.setFillColor(Color(blockcolor));
    thing.setPosition(enemystartx, enemystarty);
    gameDisplay.clear();
    gameDisplay.draw(thing);



}
};

主要.cpp

#include <iostream>
#include <SFML/Graphics.hpp>
#include "things.h"
using namespace std;
using namespace sf;

int main()
{
RenderWindow gameDisplay(VideoMode(1366, 768), "Game", Style::Fullscreen);
gameDisplay.setMouseCursorVisible(false);
gameDisplay.clear();
int enemystarty = -200;
int enemystartx = 300;
int enemyheight = 100;
int enemywidth = 100;
int enemyspeed = 0.3f;
int enemycount = 1;
int dodged = 0;
int blockcolor = (255, 0, 0);

RectangleShape player(Vector2f(300, 30));
player.setFillColor(Color(0, 0, 255));
player.setPosition(400, 728);


while (gameDisplay.isOpen())
{
    Event evnt;
    while (gameDisplay.pollEvent(evnt))
    {
        switch (evnt.type)
        {
        case Event::Closed:
            gameDisplay.close();
        case Event::KeyPressed:
            if (Keyboard::isKeyPressed(Keyboard::Q))
                gameDisplay.close();

        }
    }


    if (Keyboard::isKeyPressed(Keyboard::Right))
        if (player.getPosition().x < 1000)
            player.move(0.2f, 0.0f);
    if (Keyboard::isKeyPressed(Keyboard::Left))
        if (player.getPosition().x > 50)
            player.move(-0.2f, 0.0f);

    Thing thingobject;
    thingobject.thingspawn(gameDisplay, enemystartx, enemystarty, enemywidth, enemyheight, blockcolor);

    enemystarty += enemyspeed;


    gameDisplay.draw(player);
    gameDisplay.display();


}

最佳答案

问题是您在函数 Thing::thingspawn(...) 中创建了 RectangleShape 事物,它在结束后被销毁。 尝试将其声明为 Thing 类的成员

关于C++ SFML Sprite 不显示/工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42537644/

相关文章:

c++ - SendMessage() 和 PostMessage() 的正确用法

c++ - 圆和线段之间的错误碰撞检测

c++ - 检查鼠标滚轮状态 SFML

java - 控制 2d 游戏的动画速度

c++ - 使用 FFmpeg 将原始 RGB32 文件转换为 JPEG 或 PNG

c++ - 测验不认可一个好的答案

c++ - 等轴测图,鼠标 pos->tile 坐标公式中的坐标不正确

sprite-kit - 如何使 Sprite 遵循贝塞尔曲线

java - 状态管理-【切换状态,重玩游戏】

使用运算符 = 时,c++11 unsigned char 变为 int