All streams
Search
Write a publication
Pull to refresh
21
0
Демещенко Роман @gleam

User

Send message
при вылете объекта за пределы поля. Почему он может вылететь — описал ниже.
да, я знаю о подобной проблеме.
попробую доходчиво объяснить, в чем ее суть:
после определения касания, шарик необходимо «выдвинуть» за пределы ландшафта.
Сейчас я это делаю так:
while(imgData[3] != 0) {
toX = (toX — stepX);
toY = (toY — stepY);
imgData = where.ctx.getImageData(toX,toY, 1,1).data;
}

то есть выгоняю только центр объекта за пределы ландшафта. Это неправильно. Как избавиться? есть 2 варианта:
1) более точно считать касание (а не по 1 пикселю как сейчас).
2) сильнее «выдвигать» объект из препятствия.
при первом способе мы теряем быстродействие. При втором шарик будет «дергаться» при каждом отскоке.
Оперируя этими двумя способами можно добиться желаемого эффекта. У каждого этот «желаемый эффект» будет своим.
да, конечно, через несколько минут
спасибо, попробую оправдать ожидания :)
под словами «не надо» подразумевалось не «тормознутость» алгоритмов или еще что-либо, а всего-навсего банальная неточность в определении направления отскока.
Вот пример:
если мы считаем полет ракеты, или еще что-нибудь важное, то не будем производить рассчеты «на глаз», так ведь?
верно и обратное, зачем нам знать точное направление отскока мячика, если необходимо всего лишь показать «видимость» правильного движения? (как в случае с данным примером)
Я показал всего лишь одну из возможных реализаций… использовать ее или нет — дело каждого. Лично меня она пока что устраивает.

Но за замечание спасибо, высказывание «Способ 2. Неправильный» действительно может ввести в заблуждение. Исправлюсь :)
не спорю, поэтому и пишу:
«более или менее правдоподобно», а не «как надо»
картинку плохо вставил:
нет, увы, понимаете не совсем правильно.
Я просто рассмотрел пример с кругом, хотя сам объект может быть любой формы (той, что Вы запихнете в object.buffer).
Соответственно после этого немного изменится просчет «нормали», поэтому объект себя будет вести, опять же, более или менее правдоподобно.
Вот так может считаться «нормаль» при форме, отличной от круга:
не круг

Information

Rating
Does not participate
Location
Дубна, Москва и Московская обл., Россия
Date of birth
Registered
Activity