|
|
#1
|
|||
|
|||
Столкновения
Не подскажете как мне зделать столкновения?Вот то што я хочю примерно если не ошибаюсь...
if image3.top=image4.top then image4.visible:=false; if image3.left=image4.left-10 then image4.visible:=false; Просто когда я ввожу = (Точное определение) он не работает..а если так например: if image3.top>image4.top then image4.visible:=false; if image3.left>image4.left-10 then image4.visible:=false; но так же не получится точное столкновения ..што тогда я должен делать?Или есть ли другие способы? |
#2
|
|||
|
|||
Держи, функция для определения коллизии двум картинок (TImage).
Код:
function IsCrossImages(const aImage1, aImage2:TImage):boolean; begin with aImage1 do Result:=((aImage2.Left >= Left) and (aImage2.Top >= Top) and (aImage2.Left <= Left+Width) and (aImage2.Top <= Top+Height)) or ((aImage2.Left+aImage2.Width >= Left) and (aImage2.Top+aImage2.Height >= Top) and (aImage2.Left+aImage2.Width <= Left+Width) and (aImage2.Top+aImage2.Height <= Top+Height)) or ((aImage2.Left >= Left) and (aImage2.Top+aImage2.Height >= Top) and (aImage2.Left <= Left+Width) and (aImage2.Top+aImage2.Height <= Top+Height)) or ((aImage2.Left+aImage2.Width >= Left) and (aImage2.Top >= Top) and (aImage2.Left+aImage2.Width <= Left+Width) and (aImage2.Top <= Top+Height)); end; Код:
Image4.Visible:=IsCrossImages(Image3,Image4); Последний раз редактировалось Asinkrit, 01.08.2010 в 12:35. |
#3
|
|||
|
|||
Спс за ответ.Но как понять ето при моём случай?iscrossimagesету функцию я написал.А потом што мне переписать второй код?Я и так зделал но второй код даёт ошибку...(
|
#4
|
|||
|
|||
Сорри, неправильно написал, исправил, "второй код" теперь работает правильно, юзай..
Код:
Image4.Visible:=IsCrossImages(Image3,Image4); |