Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Динамическое рисование и столкновение с объектом (http://www.flasher.ru/forum/showthread.php?t=118751)

sersir 02.12.2008 20:50

Вложений: 1
Всем привет. Созрел тут вопросик. Поиск не дал решений.
Вообщем...Мне нужно, чтоб линия(динамическое рисование) столкивалась с объектом(мувиклип) и происходило действие (в данном случее объет изчезает). Странно то, то с простым хитТестом линия взаимодействует, но взаимодействует как полный объект, то есть как 4-х угольник. А мне нужно, чтоб взаимодействовала как линия, нужно сложное столкновение. Вообщем посмотрите, вроде код правильный, только не хочет работать. С обычными мувиками все работает, а в данном случае исключение почему-то. Помогите пожалуйста, кто может.

Вот сам файл.

Нету ни у кого вариантов ?

sersir 09.12.2008 19:01

Разве такой сложный пример ? :( Ну хотя бы объясните с какой стороны подойти. Просто как я понимаю, тут совсем другая схема столкновений, хитТестом не получится. Походу прийдется через математические функции решать.

scarbo 09.12.2008 19:06

В Вашем случа можно просто проверить,_xmouse и _ymouse на пересечение границ квадратика,и все

sersir 10.12.2008 02:50

Да если бы всё было так легко =) Это самый простой пример. Просто у меня в игре будет не один клип, а много =) И нужно, чтоб когда мувики попадали под линию, то они удалялись.

Добавлено через 18 часов 58 минут
Код AS1/AS2:

_root.onEnterFrame=function(){
        //if(_root.koly.hitTest(_root.enemy)){
                //_root.enemy._visible=0;
        //}
        _root.createEmptyMovieClip("koly",this.getNextHighestDepth());
        _root.koly.lineStyle(2,0xff0000,100);
        _root.koly.moveTo(_root.player._x,_root.player._y);
        with(_root.koly){
        if (_root.enemy.hitTest(getBounds(_root).xMin, _y, true)) {
                                _root.enemy._visible=0;
                        }
                        if (_root.enemy.hitTest(getBounds(_root).xMax, _y, true)) {
                                _root.enemy._visible=0;
                        }
                        if (_root.enemy.hitTest(_x, getBounds(_root).yMin, true)) {
                                _root.enemy._visible=0;
                        }
                        if (_root.enemy.hitTest(_x, getBounds(_root).yMax,true)) {
                                _root.enemy._visible=0;
                        }
        }
}
_root.onMouseDown=function(){
        _root.koly.lineTo(_root._xmouse,_root._ymouse);
}

Вот сам код.

Добавлено через 48 часов 14 минут
Можете хотя бы сказать с какой стороны подходить =)

sersir 14.12.2008 00:10

Вопрос ещё открыт

zurkis 14.12.2008 00:28

sersir отредактируй свой код тегам code

silin 14.12.2008 01:08

как вариант смотреть не хитТест с мувиком линии а хитТест с точками траектории:
Код AS1/AS2:

_root.createEmptyMovieClip("koly",this.getNextHighestDepth());
koly.lineStyle(2,0xff0000,100);
 
_root.onMouseDown = function() {
        koly.moveTo(player._x,player._y);
        koly.lineTo(_xmouse,_ymouse);
        if (enemy._visible) {
                var dx = (_xmouse-player._x)/100;//100-к примеру, зависит от условий задачи
                var dy = (_ymouse-player._y)/100;
 
                for (var i:Number = 0; i<100; i++) {
                        var x = player._x+i*dx;
                        var y = player._y+i*dy;
                        if (enemy.hitTest(x, y)) {
                                enemy._visible = false;
                                return;
                        }
                }
        }
};


sersir 15.12.2008 19:26

silin, cпасибо тебе большое, все отлично работает ! =)


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

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