Форум 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=200076)

DoctorQueb 29.05.2013 20:45

Как определить столкновение экземпляра с самим собой?
 
Вложений: 2
Доброго времени суток.
Возник интересный вопрос по поводу того, как определить столкновение экземпляра с самим собой?
Нужно для создания передвигаемых блоков, т.е. когда один блок касается другого, он начинает "подвигать" его.
Имеется пока что простенький код для игрока, заставляя его передвигать блоки

Код AS1/AS2:

var speed = 6;
 
var blocks = [];
 
hero.onEnterFrame = function()
{
        if (Key.isDown(Key.LEFT))
        {
                this._x -= speed;
        }
        if (Key.isDown(Key.RIGHT))
        {
                this._x += speed;
        }
        if (Key.isDown(Key.UP))
        {
                this._y -= speed;
        }
        if (Key.isDown(Key.DOWN))
        {
                this._y += speed;
        }
        for (var i = 0; i<=blocks.length; i++)
        {
                bl = blocks[i];
                rad = bl._width/2;
                if (this.hitTest(bl._x-rad, bl._y, true))
                {
                        bl._x += 2;
                        this._x -= rad/5;
                }
                if (this.hitTest(bl._x+rad, bl._y, true))
                {
                        bl._x -= 2;
                        this._x += rad/5;
                }
                if (this.hitTest(bl._x, bl._y-rad, true))
                {
                        bl._y += 2;
                        this._y -= rad/5;
                }
                if (this.hitTest(bl._x, bl._y+rad, true))
                {
                        bl._y -= 2;
                        this._y += rad/5;
                }
        }
};

Заранее спасибо

dark256 30.05.2013 00:00

Коллега..... представьте..... вот вы идете по улице.... и налетаете на самого себя....
Это возможно?
Тут точно также. Вероятно, вы имели в виду "налететь на такой же объект"?

Введите в свойства объекта некий ID..... Типа
any_block.id = 1
any_block.id = 2
...
any_block.id = N

И если при хиттесте id совпадают - то это значит что "сам на себя" :)

deep70 30.05.2013 11:54

Цитата:

Сообщение от dark256 (Сообщение 1135497)
Коллега..... представьте..... вот вы идете по улице.... и налетаете на самого себя....
Это возможно? <...>

игра Snake, например, иллюстрирует самоколлизию.
А еще это можно наблюдать в Transport Tycoon Deluxe (или ныне в OpenTTD)

dark256 30.05.2013 13:17

Питон сделан из множества объектов, как бы....
Соответственно в данном случае речь может идти о пересечении множеств.
Опишите алгоритм самоколлизии для питона из ОДНОГО дискретного неморфирующего элемента :)

Соотв. "Как определить столкновение экземпляра с самим собой" в данном случае вообще звучит некорректно.

deep70 30.05.2013 13:53

Простите, ляпнул не подумав. У змейки же есть "голова" которая и тестирует столкновения.

Tails 30.05.2013 14:04

Очень просто:
Код AS1/AS2:

head.hitTest(head);


dark256 30.05.2013 14:31

Цитата:

Сообщение от Tails (Сообщение 1135598)
Очень просто:

Может таки всё ж:

Код AS1/AS2:

head.hitTest(body);


Tails 30.05.2013 14:42

dark256,
Но тогда голова не будет сталкиваться сама с собою!

dark256 04.06.2013 11:23

А как ты себе представляешь это?
Одна и та же голова ударяется саму об себя....
Как , черт возьми, Холмс????
Можно "схемку, аль чертеж" ? :))))

Цитата:

Коллега..... представьте..... вот вы идете по улице.... и налетаете на самого себя....
С.Лем, "Звездные дневники Ийона Тихого" ? :))))


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

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