Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   отбивание шарика от линии (http://www.flasher.ru/forum/showthread.php?t=206392)

Wadimir 01.02.2014 16:49

отбивание шарика от линии
 
Приветствую!
Не получается решить одну проблему. Есть шарик который двигается. При столкновении с линией, он должен правильно отбиться. Почему то в моём коде это не происходит. Где у меня ошибка?

Код AS3:

ball.rotation = 90;
 
addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
function onEnterFrame(event:Event):void
{
        moveBall();
 
        if(/*столкновение произошло*/) {
                reflection(new Point(ball.x, ball.y));
        }
}
 
function reflection(pt:Point):void
{
        var x:Number = pt.x;
        var y:Number = pt.y;
        var perpendicular:Number = ball.rotation - Math.PI / 2;
        var iangle:Number = Math.atan2(y, x);
        var rangle:Number = 2 * perpendicular - iangle;//угол падения равен углу отражения;
 
      ball.rotation = rangle;
}
 
function moveBall():void
{
        var radians:Number = ball.rotation*Math.PI/180;
        var vectorX:Number = Math.cos(radians);
        var vectorY:Number = Math.sin(radians);
 
        var speed:Number = 2;
        ball.x += speed*vectorX;
        ball.y += speed*vectorY;       
}


FlasherEgor 01.02.2014 17:08

А где функция, что проверяет, произошло ли столкновение? Или она без проблем работает?

Wadimir 01.02.2014 17:12

Цитата:

Сообщение от FlasherEgor (Сообщение 1158651)
А где функция, что проверяет, произошло ли столкновение? Или она без проблем работает?

та функция работает правильно и я подумал что не нужно её здесь описывать. Вопрос ведь не про столкновение, а про отбивание.

FlasherEgor 01.02.2014 18:22

Может, дело в
Код AS3:

var perpendicular:Number = ball.rotation - Math.PI / 2;

Rotation ведь, насколько я помню, в градусах, а Math.PI - радианы...

Wadimir 02.02.2014 12:40

так как правильно посчитать?

RandomUser 02.02.2014 15:00

А от какой линии шарик должен отталкиваться?

Akopalipsis 02.02.2014 16:53

Если честно, то я не знаю, как сделать отскок, но я точно знаю, что если Вы хотите сделать отскок от любой поверхности, то идете не верно. По коду видно, что мяч вращается, а это затрудняет вычисление правильного угла. При расчетах отскока нужно учитывать нормаль прямой. Мне самому интересно, как это сделать.

Добавлено через 31 секунду
Может кто-то хоть последовательность правильную подскажет.

Wadimir 03.02.2014 12:10

так мяч и должен вращаться. Это может быть и не мяч, а машинка, которая разворачивается и едет в другую сторону.

Akopalipsis 03.02.2014 16:41

Вложений: 3
Если что-то не понятно, то спрашивайте.
Картинки png, почему они с белым фоном на форуме?

alexcon314 03.02.2014 17:51

Wadimir, вы, часом, не из этой темы функцию reflection попытались использовать? Так оно и там не работало. :)
Обратите внимание на пост №3
из той же темы. Там есть рациональное зерно, и если вы немного переосмыслите подход к реализации геометрии на плоскости, вам может это помочь.

Akopalipsis, не устаете меня поражать.


Часовой пояс GMT +4, время: 22:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.