Цитата:
|
Сообщение от _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 на противоположный.