我是游戏开发和编程的初学者。
我正在尝试学习构建游戏引擎的一些原理。
我想创建一个简单的游戏,正要尝试实现游戏引擎。
所以我认为我的游戏引擎应该控制这些事情:
- Moving the objects in the scene
- Checking the collisions
- Adjusting movements based on collisions
- Passing the polygons to the rendering engine
我设计了这样的对象:
class GlObject{
private:
idEnum ObjId;
//other identifiers
public:
void move_obj(); //the movements are the same for all the objects (nextpos = pos + vel)
void rotate_obj(); //rotations are the same for every objects too
virtual Polygon generate_mesh() = 0; // the polygons are different
}
我在游戏中有4个不同的对象:飞机,障碍物,玩家,子弹,并且我将它们设计如下:
class Player : public GlObject{
private:
std::string name;
public:
Player();
Bullet fire() const; //this method is unique to the class player
void generate_mesh();
}
现在在游戏引擎中,我希望有一个常规的对象列表,可以在其中检查例如碰撞,移动对象等情况,但是我也希望游戏引擎将使用用户命令来控制玩家...
这是一个好主意吗?
class GameEngine{
private:
std::vector<GlObject*> objects; //an array containg all the object present
Player* hPlayer; //hPlayer is to be read as human player, and is a pointer to hold the reference to an object inside the array
public:
GameEngine();
//other stuff
}
GameEngine构造函数将如下所示:
GameEngine::GameEngine(){
hPlayer = new Player;
objects.push_back(hPlayer);
}
我使用指针的事实是因为我需要调用fire()
Player对象唯一的那个。
所以我的问题是:这是一个好主意吗?我在这里使用继承是错误的吗?