【发布时间】:2013-10-30 22:18:09
【问题描述】:
我有一个 Game.cpp,我正在我的 Player 类中调用一个更新函数。在我的播放器更新功能中,我用它来检查键盘输入,它似乎可以工作,但是每当我尝试调用 .move() 函数时,它似乎都不起作用。我也没有错误。我是 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)
{
}
【问题讨论】:
-
你能显示一些代码吗?
-
具体是什么代码?
-
好吧,你刚刚告诉我们你的一些课程。我怀疑没有任何进一步的信息,任何人都能够提供帮助。首先,你调用
move函数的地方怎么样? -
刚刚在我的播放器类中编辑,我怀疑这是否足以获得帮助。我也会添加我的其他人。
-
所有的伪OO货崇拜有什么用?
void GameObject::moveObject(float x, float y, sf::Sprite& sp) { sp.move(x, y); }- 有什么用?GameObject是否会为它传递给 sprite 的任何调用收取费用?