我一直在尝试使用sfml和c ++在visual studio中创建一个sprite,代码本身运行正常并且似乎没有错误。
PLAYER.H
#pragma once
#include "pSprite.h"
#include "Sprite.h"
#include "Enemy.h"
#include "Input.h"
#include <Windows.h>
class Player : public pSprite
{
public:
Input input;
Player(const sf::Vector2f & size = sf::Vector2f(0, 0));
~Player();
pSprite playerSprite;
sf::Texture texture;
float playerWidth;
float playerHeight;
float playerSpeed;
void update(float dt);
void initPlayer(float x, float y);
void kill(); // set to gameover
bool isAlive();
void move();
sf::Vector2f position;
这是Player类的头文件,它是从pSprite类派生的,它本身是从Sprite类派生的,以便绕过&#34;无法实例化抽象类&#34;错误。
PLAYER.CPP
void Player::initPlayer(float x, float y)
{
position.x = x;
position.y = y;
playerWidth = 60;
playerHeight = 50;
texture.loadFromFile("player1.png");
playerSprite.setTexture(&texture);
playerSprite.setSize(sf::Vector2f(playerWidth, playerHeight));
playerSpeed = 10;
playerSprite.setPosition(position);
}
这是加载纹理的函数的代码,应该设置精灵。
在main函数中调用initPlayer,并且应该为main中调用的所有其他函数设置它,以便进行绘图和显示。