PDA

Просмотр полной версии : Приземление


Джерк
23.06.2004, 16:14
Примерно месяц назад я задавал вопрос про прыжок. В результате я сам сделал прыжок, но вот при приземлении шар "проваливается" в поверхность, а потом очень быстро взлетает вверх так, что его не видно на экране. Мне надо чтобы шар не проваливался в поверхность и не отскакивал от нее. Пожалуйста, кому не лень, посмотрите следующий файл и напишите в чем я ошибся. :confused:

Елё
23.06.2004, 18:27
Пожалуйста, кому не лень, посмотрите следующий файл и напишите в чем я ошибся

Это зависит от того что ты хотел сделать ;-)
ЧТо бы шар не проваливался достаточно написать _y = 250 :-)


Если серьёзно то тут как минимум две ошибки
1. Поскольку onEnterFrame - это дискретное время, то с ускорением связываться нельзя
2. hitTest может не работать поскольку шарик за один кадр может проскочить линию

Я бы сделал так:


onClipEvent (load)
{
vx = 0;
vy = 0;
dx = 1; // ускорение по клавишам
dxt = 0.5; // ускорение трения
dyp = -10; // ускорение при прыжке
dyg = 1; // ускорение свободного падения
}
onClipEvent (enterFrame)
{
// тут ускоряем от клавиатуры
if (Key.isDown(Key.RIGHT))
vx += dx;
else if (Key.isDown(Key.LEFT))
vx -= dx;
// под этим ифом действует трение
if(vx > 0)
if(vx < dxt) vx = 0;
else vx -= dxt;
else
if(vx > -dxt) vx = 0;
else vx += dxt;
// c х рахобрались
// теперь с Y
// учитываем ускорение свободного падения
vy += dyg;

_y += vy;
_x += vx;
if(_y >= 235)
{
_y = 235;
vy = 0;

if (Key.isDown(Key.UP))
// прыжок
vy += dyp;
}
}