我一直在关注SDL上的lazyfoos教程,并且我已经大量修改了他的代码以制作一种船游戏,它会四处移动。我正试图让船射击,但我完全不知道如何去做这件事。我有船,它的动作和图像在课堂上的实际应用,我想知道是否有人有任何技术或某些方法有效地使船射击,使镜头独立移动然后消失屏幕外。我知道我给出了一个模糊的解释,但我不想给出所有的答案,只是一些示例代码和正确方向上的一点。
答案 0 :(得分:2)
创建一个类来容纳一个射弹,包含你需要的所有信息,例如:
struct Projectile
{
Vector2 position;
Vector2 velocity;
shared_ptr<Image> graphic;
Time time_until_my_destruction;
bool dead;
void update(Time time_delta) {
if(!dead) {
position += velocity * time_delta;
time_until_my_destruction -= time_delta;
if(time_until_my_destruction < 0.0) dead = true;
}
}
void draw(DrawDest & dest) const {
graphic->draw(dest, position);
}
bool checkCollision(const GameObject & object) const {
return object.area().contains(position);
}
};
这个类显然不完整,你可能想要调整访问级别,编写一些构造函数和其他东西,但它应该给你基本的想法。
制作那些容器。当船发射时,将其中的一个放入容器中。每个框架,调用更新,绘制,检查抛射物是否已经死亡,并检查是否与游戏对象发生碰撞。如果发生碰撞,则施加伤害或其他。如果物体已经死了,请将其从容器中取出。
答案 1 :(得分:0)
我绝对推荐Aaron's Game Programming Tutorials,它使用C ++和SDL。