2013-10-30 62 views
0

我有一個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) 
{ 
} 
+1

你能表現出一定的代碼? –

+0

特別是什麼代碼? – user2892932

+0

嗯,你剛剛告訴我們你的一些課程..我懷疑任何人都可以幫助沒有任何進一步的信息。對於初學者來說,你稱之爲「移動」功能的地方呢? –

回答

1

從示出應重新寫moveObject作爲

void GameObject::moveObject(float x, float y) 
{ 
    spr.move(x, y); 
} 

其中SPR是在類別處使用遊戲對象的成員變量的代碼

0

將您的moveObject函數更改爲此

void GameObject::moveObject(float x, floaty) 
{ 
    spr.setPosition(x, y); 
} 

如果你需要得到x和y位置使get方法爲SPR,還是公開