Главная
Регистрация
Вход
Авторизироваться
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ADMIN, Nextik  
столкновение спрайтов
saneeДата: Четверг, 01.12.2011, 14:36 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 18
Награды: 0
Репутация: « 1 »
Статус: Offline
дело в том что я программирую на телефоне и не могу подключать либы.
Скажите как сделать столкновение картинок?
 
PassCallДата: Четверг, 01.12.2011, 21:17 | Сообщение # 2
Знающий
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: « 4 »
Статус: Offline
if (abs(x1-x2)<(ImageWidth(image1)+ImageWidth(image2))/2.0) or (abs(y1-y2)<(ImageHeight(image1)+ImageHeight(image2))/2.0) then ..........

или более правильно:

a:=abs(x1-x2);
b:=abs(y1-y2);
c:=trunc((ImageWidth(image1)+ImageWidth(image2))/2.0);
d:=trunc((ImageHeight(image1)+ImageHeight(image2))/2.0);

if (a<c) or (b<d) then .......................
 
121212Дата: Четверг, 01.12.2011, 21:51 | Сообщение # 3
Программист
Группа: Проверенные
Сообщений: 268
Награды: 7
Репутация: « 14 »
Статус: Offline
паскаль твой код всегда труднопонимаемый:D т.к. дохрена не нужных вычислений=)
Code
if (px+24>zx) and (pX<zx+24) and (py+24>zy) and (pY<zy+24) then столкновение=)
py,px координаты игрока zx,zy координаты тайла. 24 эт размер тайла и игрока в пикселях(24х24).


Сообщение отредактировал 121212 - Четверг, 01.12.2011, 21:53
 
PassCallДата: Четверг, 01.12.2011, 23:04 | Сообщение # 4
Знающий
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: « 4 »
Статус: Offline
ну
1. если размеры спрайта не одинаковы, то нужно вычесть расстояние, на котором они сталкиваются (половина от первого спрайта+половина от второго спрайта)

2. а если размер спрайтов заранее не известен? например, при "скармливании" функции определённых спрайтов?
 
saneeДата: Пятница, 02.12.2011, 13:37 | Сообщение # 5
Новичок
Группа: Пользователи
Сообщений: 18
Награды: 0
Репутация: « 1 »
Статус: Offline
большое спасибо
 
saneeДата: Пятница, 02.12.2011, 13:39 | Сообщение # 6
Новичок
Группа: Пользователи
Сообщений: 18
Награды: 0
Репутация: « 1 »
Статус: Offline
скажите пожалуйста а процедура может использвать переменные объявленные в главной программе?
 
PassCallДата: Пятница, 02.12.2011, 14:32 | Сообщение # 7
Знающий
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: « 4 »
Статус: Offline
может, конечно
 
saneeДата: Пятница, 02.12.2011, 15:26 | Сообщение # 8
Новичок
Группа: Пользователи
Сообщений: 18
Награды: 0
Репутация: « 1 »
Статус: Offline
Спасибо)
 
  • Страница 1 из 1
  • 1
Поиск: