Всем hi. Нужна небольшая помощь. У меня на форме есть два объекта типа shape. Один двигается. Как сделать, чтобы один объект при косание другого останавливался? Варианты типа:
If Shape4.top>= shape1.top then timer1.enabled:=false;
If Shape4.left<= shape1.left+shape1.width then timer1.enabled:=false;
И все в таком духе я пробовал .Остановка происходит всегда когда значение одного объекта по y больше или равно другого по y. А мне нужно сделать, чтобы объект останавливался именно тогда, когда косается другого объекта. Тут как-то надо через текущие координаты объекта делать. Когда координата одного объекта совпадает с другой, то выполняется наше условие. Буду очень признателе любой помощи
Взаимодействие двух объектов.
Модератор: Модераторы
Эти объекты - простые примитивы? Точка, линия, окружность, прямоугольник... или сложную геометрию.La_fleur_ писал(а):чтобы один объект при косание другого останавливался?
Делается нуль координата/базовая/начало координат для объекта - [xyz]. Сам объект может описан другими параметрами(высота, длина, радиус,путь(path)..) - эти данные рисуют фигуру по отношению от [xyz].La_fleur_ писал(а):Тут как-то надо через текущие координаты объекта делать.
меняется [xyz], фигура рисуется по отношению к новой координате [xyz] (вектора складываются). Если сложные объекты то может стоить применить математику матриц.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
La_fleur_ писал(а):Всем hi. Нужна небольшая помощь. У меня на форме есть два объекта типа shape. Один двигается. Как сделать, чтобы один объект при косание другого останавливался? Варианты типа:
If Shape4.top>= shape1.top then timer1.enabled:=false;
If Shape4.left<= shape1.left+shape1.width then timer1.enabled:=false;
Код: Выделить всё
if Shape4.BoundsRect.IntersectsWith(Shape1.BoundsRect) then...;