http://docs.yoyogames.com/source/dad...ions_image.png
Вид для печати
для простых объектов (допустим кубики 16х16) рассчёт столкновения (как у Джонатана) на-бейсике выглядит так
IF ABS (x1-x2) < l then collision
А к чему эта картинка? В примере программы из гайда же маска не используется.
Видимо, какое-то недопонимание происходит. Как выглядит столкновение не квадратных спрайтов мне понятно.
Непонятно как работает вот это:
Т.е. формула в конце алгоритма такая:Код:; Check (l, h) for collision with (c, b), cutting corners.
colc16 ld a,l ; x coord.
sub c ; subtract x.
jr nc,colc1a ; result is positive.
neg ; make negative positive.
colc1a cp 16 ; within x range?
ret nc ; no - they've missed.
ld e,a ; store difference.
ld a,h ; y coord.
sub b ; subtract y.
jr nc,colc1b ; result is positive.
neg ; make negative positive.
colc1b cp 16 ; within y range?
ret nc ; no - they've missed.
add a,e ; add x difference.
cp 26 ; only 5 corner pixels touching?
ret ; carry set if there's a collision.
|(x1-x2)+(y1-y2)|<=25 то столкновение считается, если больше, то нет.
Мне не код непонятен, а именно геометрический (?) принцип лежащий в основе него. Я так понимаю, что манипулируя вот этим числом (в данном случае 25) можно изменять размер отсекаемых углов. Поправьте меня, если я что-то не так понял.
как в анекдоте "1/2+0.5=? нутром чую что литр, а доказать немогу"
специально по-пути домой купил тетрадку в-клеточку.
формула работает, осталось доказать зависимость суммы разницы координат
Только сейчас вспомнил, что давеча скачивал эту книгу - было переведено 4 главы - до "Случайных чисел" включительно. С английским оригиналом точность не сравнивал - каюсь, слабо и долго читаю английский текст, сноровка не велика - но ваша версия читается и воспринимается прекрасно. Спасибо.