SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Стрельба в место клика мыши
В этой теме 2 ответа, 2 участника, последнее обновление saxartom 7 года/лет, 2 мес. назад.
-
АвторСообщения
-
Здравствуйте, можете подсказать решение одной неприятность при стрельбе в место клика мыши.
По ситуации игрок стреляет из двустволки, то бишь у него есть два выстрела. Когда “пуля” долетает до места, она исчезает.
И вот тут проблема, если выстрелить второй раз в другое место, пока первая “пуля” не исчезнет, то как и надо появится вторая пуля и полетит в место клика мыши, НО при этом и первая изменит направление, и полетит в новое место клика.
C++12345678910111213141516171819202122232425262728293031323334353637383940//нажатие кнопки мыши//if (event.type == Event::MouseButtonReleased)if (event.key.code == Mouse::Left && hero.ATTACK == hero.shotgun)if (Shotgun.ammo > 0){if (hero.shoot){hero.shoot = false;shotgunBull.push_back(new TBullet(weapSprite, "ShotGunBullet", hero.x, hero.y, 43, 18, hero.STATE));for (it = shotgunBull.begin(); it != shotgunBull.end(); it++)(*it)->isMove = true;tempXBull = pos.x;tempYBull = pos.y;--Shotgun.ammo;}} else Shotgun.reloadWeap(hero);//update и перемещение//for (it = shotgunBull.begin(); it != shotgunBull.end(); it++){if ((*it)->isMove){distanceBull = sqrt(pow((tempXBull - (*it)->x), 2) + pow((tempYBull - (*it)->y), 2));if (distanceBull > 2){(*it)->x += 0.6*time*(tempXBull - (*it)->x) / distanceBull;(*it)->y += 0.6*time*(tempYBull - (*it)->y) / distanceBull;}else{(*it)->isMove = false;(*it)->life = false;}}}for (it = shotgunBull.begin(); it != shotgunBull.end();){(*it)->update(time);if ((*it)->life == false){it = shotgunBull.erase(it);}else it++;}Добавь в класс пули поле sf::Vector2f для хранения координат конечной позиции. Получится что на каждую пулю будет своя конечная точка.
Я сделал, но все равно конечная точка изменялась.
Я добавил проверку условия, чтобы координаты считывались, только в случае, когда “пуля” не двигается, то есть в самом начале, и все заработало.
Все равно спасибо.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.