ЕС
Евгений СальниковМамыр 29, 2018, 10:55 Т.Қ.
Проблемы с коллизией
У меня есть три основным класса land из него состоит поле 30 на 30 это картинка, класс blockland это тоже картинка которую я добавляю при нажатии на правую кнопку мыши на поле и есть класс actor это герой он по клеткам идет туда куда я кликнул. Мне нужно сделать проверку коллизии, чтобы при встрече на сцене blockland он его обходил. Пытаюсь сделать так:
blockland *test; case ActorAction::Down: m_moveAnimation->setPosAt(1.0, pos()+QPointF(0, SpeedPx)); QList<QGraphicsItem*>items = scene()->items(QPolygonF()<<mapToScene(0,0)<<mapToScene(20,20)<<mapToScene(-20,-20)); foreach (QGraphicsItem *item,items) { if(item==this) { continue; } if(item==test) { m_moveAnimation->setPosAt(1.0, pos()+QPointF(0, -SpeedPx)); } }
В итоге он разворачивает совершенно в рандомный момент когда я устанавливаю blockland на сцене. Пытался сделать через if(!scene()->collidingItems(this).isEmpty()) тоже не получилось ни как обозначить класс blockland. Пытался написать через формирование абстрактоного пула для объектов но после установление этого пула как одного из родителей класс выдавал ошибки типа : invalid new-expression of abstract class type. Уже всю голову сломал как еще можно это сделать.
![Рекомендуем хостинг TIMEWEB](/media/technical_storage/timeweb-120-90.jpg)
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
Ua
- Unknown akadamn
- Қаң. 24, 2025, 5:14 Т.Қ.
Qt - Тест 001. Сигналы и слоты
- Нәтиже:84ұпай,
- Бағалау ұпайлары4
Ua
- Unknown akadamn
- Қаң. 24, 2025, 4:22 Т.Қ.
Qt - Тест 001. Сигналы и слоты
- Нәтиже:42ұпай,
- Бағалау ұпайлары-8
Соңғы пікірлер
ИМ
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь МаксимовҚар. 22, 2024, 9:51 Т.Қ.
![Evgenii Legotckoi](/media/cache/5a/49/5a499b0c8eb5e79957fec0aea35e5d98.webp)
Evgenii LegotckoiҚаз. 31, 2024, 11:37 Т.Қ.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовҚаз. 5, 2024, 4:51 Т.Қ.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
f
Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
firstlunoxodАқп. 15, 2025, 1:46 Т.Қ.
![Дмитрий](/media/cache/0a/bd/0abde19a58c2f6720c26b7b2c7a1ac5f.webp)
ДмитрийАқп. 3, 2025, 4:24 Т.Қ.
не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Еще попробовал таким образом
Добрый день!
Я уже пытался сделать таким образом, видел ваш пример в другом посте сделал вот так вот
Наследовал класс который хотел занести туда
вам нудно переопределить метод boundingRect.
Попытался переопределить boundingRec() и процессе поиска информации понял что он вроде как применяется только для непосредственно нарисованных объектов а у меня все в картинка. После этого наследовал базовый класс от QGraphicsPixMapItem и теперь у меня ошибка при попытке вернуть тип в классе который я наследую от базового
написал так
Но теперь все классы которые я наследую от базового вызывают ошибку при попытке их добавить на сцену и установить их позицию методами addItem и setPos или при использовании setZValue
А вы текст ошибки прилагать будете?
Плюсом я вам указывал на статью, где есть пример с абстрактным методом getType() в базовом классе. Пробовали сделать, как в той статье?
Ошибки вот такого типа
тааак...
Какая у вас иерархия наследования классов сейчас? Что-то совсем по ходу намудрили.
есть gameobject
Вот так должно выглядеть наследование для класса TestLand
Теперь снова ошибка
Эх... ну правильно, у вас же конструктора такого у gameobject нет.
Спасибо огромное за помощь. Намучился ты со мною конечно, без тебя бы не зделал
Еще один вопрос, можно ли использовать collidingitem перед объектом.
Вы можете использовать метод items() только передавать в него форму вашего объекта.
Учту, еще раз спасибо большое за помощь