【发布时间】:2021-11-15 11:24:09
【问题描述】:
我有一个名为 Survival Shooter 的项目,我必须在其中为敌人制作生成器。 我不知道如何让多个敌人从随机位置产生或从一个位置产生,但例如在 5 秒后。
void Tema1::SpawnEnemy(glm::mat3 visMatrix, float deltaTime, float* posX, float* posY, float speed)
{
enemyAngle = atan2(translateX - *posX, translateY - *posY);
*posX += speed * sin(enemyAngle) * deltaTime;
*posY += speed * cos(enemyAngle) * deltaTime;
//Body
modelMatrix = visMatrix;
modelMatrix *= transform2D::Translate(*posX, *posY);
modelMatrix *= transform2D::Scale(1, 1);
modelMatrix *= transform2D::Rotate(enemyAngle);
modelMatrix *= transform2D::Translate(-50, -50);
RenderMesh2D(meshes["border"], shaders["VertexColor"], modelMatrix);
//Eye1
modelMatrix = visMatrix;
modelMatrix *= transform2D::Translate(*posX, *posY);
modelMatrix *= transform2D::Scale(0.25f, 0.25f);
modelMatrix *= transform2D::Rotate(enemyAngle);
modelMatrix *= transform2D::Translate(150, 200);
modelMatrix *= transform2D::Rotate(0);
modelMatrix *= transform2D::Translate(-50, -50);
RenderMesh2D(meshes["square2"], shaders["VertexColor"], modelMatrix);
//Eye2
modelMatrix = visMatrix;
modelMatrix *= transform2D::Translate(*posX, *posY);
modelMatrix *= transform2D::Scale(0.25f, 0.25f);
modelMatrix *= transform2D::Rotate(enemyAngle);
modelMatrix *= transform2D::Translate(-150, 200);
modelMatrix *= transform2D::Rotate(0);
modelMatrix *= transform2D::Translate(-50, -50);
RenderMesh2D(meshes["square2"], shaders["VertexColor"], modelMatrix);
}
这是我想绘制新敌人时调用的方法,我在Update方法中调用它。
问题是,我如何在一段时间后绘制一个新的敌人而不摧毁我在场景中的当前敌人?
【问题讨论】:
标签: c++ 2d game-development glm-math