我有一個Game.cpp,我在我的Player類中調用一個更新函數。在我的播放器更新函數我有它來檢查鍵盤輸入,它似乎工作,但每當我嘗試調用.move()函數,它似乎無法正常工作。我也沒有得到任何錯誤。我對sfml很陌生,用C++很不錯。幫助表示讚賞!使用另一個類的函數時,Sprite不移動SFML C++
#include "Player.h"
Player::Player(void):
vel(0),
maxvel(100)
{
Load("Assets/sss.png",true);
}
void Player::Update(sf::Sprite& p)
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
moveObject(-3,0, p);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
moveObject(-3,0, p);
}
}
Player::~Player(void)
{
}
這是遊戲物體CPP
#include "GameObject.h"
#include <iostream>
GameObject::GameObject(void)
{
isLoaded = false;
}
void GameObject::Load(std::string flname, bool isPlayer)
{
if(!tex.loadFromFile(flname))
{
EXIT_FAILURE;
}
else
{
if(isPlayer)
{
if(!tex.loadFromFile(flname, sf::IntRect(0,0,33,33)))
{
EXIT_FAILURE;
}
else
{
std::cout << "Loading image" << "\n";
filename = flname;
spr.setTexture(tex);
isLoaded = true;
}
}
else
{
std::cout << "Loading image" << "\n";
filename = flname;
spr.setTexture(tex);
isLoaded = true;
}
}
}
void GameObject::Draw(sf::RenderWindow & window)
{
if(isLoaded)
{
window.draw(spr);
window.display();
std::cout << "Sprite drew" << "\n";
}
}
void GameObject::setPos(float x, float y)
{
if(isLoaded)
{
spr.setPosition(x,y);
}
}
sf::Vector2f GameObject::GetObjPos()
{
return spr.getPosition();
}
sf::Sprite& GameObject::getSprite()
{
return spr;
}
void GameObject::moveObject(float x, float y, sf::Sprite& sp)
{
sp.move(x, y);
}
GameObject::~GameObject(void)
{
}
你能表現出一定的代碼? –
特別是什麼代碼? – user2892932
嗯,你剛剛告訴我們你的一些課程..我懷疑任何人都可以幫助沒有任何進一步的信息。對於初學者來說,你稱之爲「移動」功能的地方呢? –