Я хотел бы начать с заметки. Я попытался использовать jsfiddle, но по какой-то причине холст HTML5 не работает. Итак, в качестве обходного пути я использовал http://jsbin.com/gugihuwegopa/1/. Чтобы изменить этот сайт, нажмите кнопку «Изменить» в правом верхнем углу окна. Во всяком случае, моя проблема в том, что когда весло не двигается, мяч отскакивает правильно со всех сторон (переменная nomove
не имеет к этому никакого отношения, ее просто для ее исчезновения с помощью клавиши «w»). Однако, когда я перемещаю весло мышкой по направлению к мячу, он застревает внутри весла. Я думаю, это связано с тем, что он не обновляет местоположение весла достаточно быстро, так что мяч попадает внутрь него, и мой код продолжает вызывать отскок мяча даже во время внутри. (до тех пор, пока быстро не сдвиньте весло и не отклеитесь). Да, я постарался поставить cxt.fillRect
до cxt.arc()
. Иногда мяч также проходит через весло. Я полагаю, что способ исправить это будет факторинга в направлении мяча в двух моих if
заявлений:Canvas Ball отскакивает в неправильном направлении, когда движется понг-весло
if(y+ymove>=w && y+ymove<=w+h && x>=s && x<=s+l) ymove*=-1; //top and bottom
if(x+xmove>=s && x+xmove<=s+l && y+ymove<=w+h && y+ymove>=w) xmove*=-1; //left and right
Некоторые другие методы я пытался включать:
if(y+ymove>=w && y+ymove<=w+h && x>=s && x<=s+l && centerY+17.5 < y+ymove+5 && centerX+12.5 < x+xmove+5) ymove*=-1; //top and bottom, extra +5 for radius
if(x+xmove>=s && x+xmove<=s+l && y+ymove<=w+h && y+ymove>=w && centerX+12.5 < x+xmove+5 && centerY+17.5 < y+ymove+5) xmove*=-1; //left and right
Поэтому в основном я просто нужен мяч правильно отскакивает, независимо от того, как я перемещаю весло. Не стесняйтесь редактировать все, что хотите, даже если это означает добавление более if
заявлений. Все, что я прошу, абсолютно НЕ JQuery. Заранее спасибо.