我有一个实体基类,其中的类Player和Enemy Inherit。来自Vector的派生类中的访问对象
class Entity
{
public:
virtual void Update(sf::RenderWindow &window) {};
virtual void Draw(sf::RenderWindow &window) {};
};
既当运动员又敌人包含一个精灵对象,看起来像这样:
class Player : Entity
{
public:
sf::Sprite sprite
void Update(sf::RenderWindow &window);
void Draw(sf::RenderWindow &window)
}
玩家和敌人都被设置了这样的载体内创建:
class EntityManager
{
public:
void CollisionCheck();
private:
std::vector<Entity*> entityVector;
}
我寻找使用这种形式的碰撞检测功能:
bool Collision::CircleTest(const sf::Sprite& Object1, const sf::Sprite& Object2)
所以我试图做这样的事情:
void EntityManager::ColCheck()
{
if (Collision::CircleTest(entityVector[0]->sprite, entityVector[1]->sprite))
{
cout << "COLLISION\n";
}
}
这将导致以下编译错误:
“实体类”没有名为“精灵”
我”成员我不确定如何在实体中创建一个虚拟精灵,以便我可以使用上述方法访问玩家和敌人精灵。这可能吗?
我很难过,非常感谢任何人都可以提供的帮助!
感谢您的回复!如果我在Entity中声明了'Sf :: Sprite sprite',那么代码将会被编译,但是它似乎不会影响我尝试访问的向量中的对象的精灵。所以像'entityVector [0] - > sprite.move(1.0)'这样的东西实际上并不会影响这个精灵。 – Te1 2011-01-11 06:16:31