![]() |
|
||||||||||
|
|||||
|
Всем привет.
Столкнулся с проблемой. Хочу запрограммировать скакание мяча по рельефу с правильными отскоками.. У мяча есть скорость по иксу vx и скорость по игреку vy. Каждый кадр к координатам x и y мяча добавляются эти скорости. Далее мяч (его центр) хитТестится с рельефом. Если центр мяча наложился на рельеф, мяч возвращается в предыдущую позицию и получает новый вектор скорости, соответствующий отскоку. И все работает, не идеально пока, но все-же.. Вот пример: http://politball.net.ua/5/sample1.html Надо взять маленький черный кружок и побросать его. Но чтобы мяч не улетал за кадр, я скорость мяча по иксу не прибавляю к его координате x, а отнимаю от координаты х рельефа. Все заработало, но мяч стал залипать на крутых поверхностях, хотя если его центр хитТестится с рельефом, то и рельеф, и мячик возвращаются на предыдущую позицию и получают новый вектор скорости. Вот как это происходит: http://politball.net.ua/5/sample2.html и я никак не могу понять, почему в первом случае он не залипает, а во втором залипает, хотя единственная разница в коде вот: в первом случае sharik._x += _vx;
sharik._y += _vy;
if (bgr.hitTest(sharik._x, sharik._y, true)) {
sharik._x = oldX;
sharik._y = oldY;
}
bgr._x -= _vx;
sharik._y += _vy;
if (bgr.hitTest(sharik._x, sharik._y, true)) {
bgr._x = oldXbgr;
sharik._y = oldY;
}
![]()
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
Может это поможет?
В конце статьи пример с "прыгающим шариком" |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|