SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Проблемы :D › Ответ в теме: Проблемы :D
Если класса пули у Вас еще нет, то его можно взять в уроке 28. А что бы стрелял враг можно сделать так:
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
for(it = entities.begin(); it != entities.end(); it++) { if((*it)->name == "easyEnemy") { if(p.dir == p.right) { if(IntRect(p.x,p.y,p.w*3,p.h).intersects((*it)->getRect())) if ((*it)->isShoot == true) { (*it)->isShoot = false; entities.push_back(new Bullet(BulletImage, "Bullet", lvl, p.x, p.y, 16, 16, p.left)); } } else if(p.dir == p.left) { if(IntRect(p.x-p.w*3,p.y,p.w*3,p.h).intersects((*it)->getRect())) if ((*it)->isShoot == true) { (*it)->isShoot = false; entities.push_back(new Bullet(BulletImage, "Bullet", lvl, p.x, p.y, 16, 16, p.right)); } } } } |
В цикле, где проверяются все объекты:
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
void update(float time) { if(name=="easyEnemy") { x += dx*time; checkCollision(dx,0); y += dy*time; checkCollision(0,dy); dy += 0.0005*time; if(!isShoot) { moveTimer += time; if(moveTimer >= 500) { isShoot = true; moveTimer = 0; } } if(health <= 0) life = false; anim.tick(time); } } |