Показать сообщение отдельно
Старый 16.01.2007, 14:22
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 10  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
Сообщение от _sestra_
- Полёт шарика осуществляю так:
Код:
speed = 10;
corner = 217;
ball._x += speed * Math.sin( Math.PI * corner / 180 );
ball._y -= speed * Math.cos( Math.PI * corner / 180 );
Можно немного оптимизировать вычисления:
Код:
// удар
speed = 10;
corner = 217;
// раскладываем скорость по осям
speedX = speed * Math.sin( Math.PI * corner / 180 );
speedY = speed * Math.cos( Math.PI * corner / 180 );
// полет
ball._x += speedX;
ball._y += speedY;
смотришь расстояние до стенки dy, считаешь время за которое мячик до стенки долетит, считаешь горизонтальное смещение до удара dx. Сравниваешь ее координату x с краем поля, если шарик дальше - поступаешь наоборот, смотришь на dy и получаешь dx. Если нет, повторяешь цикл, просто меняя знак speedY на противоположный.