Созданные ответы форума
-
АвторСообщения
-
я зделал через создание круглой формы, радиус которой равен радиусу поражения юнита, дальше
CircleShape AttackRangeCircle;
AttackRangeCircle.setRadius(attack_radius);установил этот круг в центр моего юнита в команде update(), теперь он будет двигаться с моим юнитом:
AttackRangeCircle.setPosition(x – AttackRangeCircle.getRadius(), y – AttackRangeCircle.getRadius());//обновляем положение круга который является радиусом атаки обьектаи в игровом цикле установил проверку на пересечение с обьектами через функцию:
if (Object1->AttackRangeCircle.getGlobalBounds().intersects(Object2->sprite.getGlobalBounds()))
{
return true;
}
когда спрайт объекта2 попадает на форму круга объекта1, функция возвращает true и первый обьект стреляет во второй.спасибо за помощь, я нашел проблему. Как оказалось с кодом всё хорошо, проблема была в битых файлах *.dll, заменив их проблема решилась!
потому что движение я поставил на
if (event.type == sf::Event::MouseButtonReleased)
{
….
}там есть закомменченные строки
////не работает по непонятным причинам
//if (event.type == Event::MouseButtonPressed)//если нажата клавиша мыши
//{
// if (event.key.code == Mouse::Left)//а именно левая
// {
// std::cout << “pressed\n”;
// }
//}
даже если снять комментирование с них, сигнал не проходит, и в консоль ничего не пишет.
Мне важна эта функция потому что без неё сложно придумать массовое выделение юнитов в области когда зажав кнопку ты выбираешь всех кто попал в выделенную область, как это происходит в стратегиях.В общем не решив проблемы своими силами, решил закинуть вам проект.
Это полигон для экспериментов с SFML для меня, делаю стратегию. причина почему не работает MouseButtonPressed мистически не понятна.
https://www.hightail.com/download/bXBZeUNETStsUi9IRHNUQwу меня не воспринимает именно команду sf::Event::MouseButtonPressed, при этом реагирует на sf::Event::MouseButtonReleased
if (event.type == sf::Event::MouseButtonPressed)//так не работает
{
….
}а так работает:
if (event.type == sf::Event::MouseButtonReleased)
{
….
}такое поведение лишено всякой логики, может быть проблемма в самом SFML?
if (event.type == sf::Event::MouseButtonPressed)
{
std::cout << “выводим чтонибуть\n” //не выскакиевает ни это сообщение
if (event.mouseButton.button == sf::Mouse::Left)
{
std::cout << “выводим чтонибуть\n” //ни это темболие
}
}не срабатывает ивент на нажатие кнопки мыши, с чем может быть связана проблема?
К примеру в определенном радиусе проверять каждую клетку на пересечение с прямоугольниками объектов из списка?
Реально в SFML сделать проверку не через Rect, а через круг? к примеру стратегия где у юнита радиус поражения не прямоугольный, а круглый?
-
АвторСообщения