Просмотр полной версии : Приземление
Примерно месяц назад я задавал вопрос про прыжок. В результате я сам сделал прыжок, но вот при приземлении шар "проваливается" в поверхность, а потом очень быстро взлетает вверх так, что его не видно на экране. Мне надо чтобы шар не проваливался в поверхность и не отскакивал от нее. Пожалуйста, кому не лень, посмотрите следующий файл и напишите в чем я ошибся. :confused:
Пожалуйста, кому не лень, посмотрите следующий файл и напишите в чем я ошибся
Это зависит от того что ты хотел сделать ;-)
ЧТо бы шар не проваливался достаточно написать _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;
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.