PDA

Просмотр полной версии : Простейшая физика с шариком


Cepreu4
12.09.2007, 04:55
Здравствуйте.
Искал искал что-нибудь похожее на форуме, но ненашел.
Пишу простейшую физику с шариком который можно подбрасывать и швырять с помощью курсора и всё бы отлично, да только шарик на высокой скорости несколько проходит через по и стены а то и вовсе застревает. И я даже знаю почему это происходит - при ускорении свободного падения, в обработчике onEnterFrame метод hitTest() проверяется уже после того как шарик получил новую координату и возможно прошел сквозь пол.
Ну а про то, что на полу он до конца вообще не останавливается я вообще не говорю :(
Собственно прилагаю и сам swf:
(на частицы не обращайте внимание - это у меня тренировочный полигон :), правый степпер это значение "прыгучести" шарика - при -0,4 и ниже очень любит застревать в стенах :) )
Подскажите пожалуйста, как можно поправить столь неприятный косяк? уже все мозги обмозговал

Therion
12.09.2007, 06:58
я, посредством долгово сидения за компом,и думанием над проблемой такого типа долекой в молодости, нашёл решение проблемы....

Допустим у нас шар движеться по оси X по напралению к стене...
Допустим его скорость 6 px/кадр, тоесть шар в каждом кадре перемещяеться на 6 px.Допустим расстояние от шара до стены составляет 2px,из за этого hitTest() не сработает, и шар залезет в стену на 4 px...
но это легко исправить,надо сделать что то вроде этого:

if(D<V){
V=D
}
D=расстояние шарика к стене
V=скорость

Тоесть если расстояние меньше чем скорость,то в следующем кадре шар продвинеться на расстояние,и сработает столкновение...

artcraft
12.09.2007, 07:07
уроки: http://tonypa.pri.ee/vectors/start.html
библиотека: http://www.cove.org/ape/index.htm
тут тоже скроро будет библиотека, а пока много заметок о физике и не только http://lab.polygonal.de/motor_physics/

Kikasso
12.09.2007, 07:33
А это просто шарик. As is.

Cepreu4
12.09.2007, 16:04
я, посредством долгово сидения за компом,и думанием над проблемой такого типа долекой в молодости, нашёл решение проблемы....

Допустим у нас шар движеться по оси X по напралению к стене...
Допустим его скорость 6 px/кадр, тоесть шар в каждом кадре перемещяеться на 6 px.Допустим расстояние от шара до стены составляет 2px,из за этого hitTest() не сработает, и шар залезет в стену на 4 px...
но это легко исправить,надо сделать что то вроде этого:

if(D<V){
V=D
}
D=расстояние шарика к стене
V=скорость

Тоесть если расстояние меньше чем скорость,то в следующем кадре шар продвинеться на расстояние,и сработает столкновение...

Гениально, а! Спасибо огромное