Форум 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)
-   -   hitTest и физика отскакивания (http://www.flasher.ru/forum/showthread.php?t=74885)

UrbanMan 30.01.2006 22:30

hitTest и физика отскакивания
 
Здраствуйте уважаемые посетители форума. У меня к вам вопрос, но для ясности сначало обрисую общую картину.

Я делаю игру где есть рокета которая летает, соответственно должны быть и препядствия, максимум что у меня получилось сделать это отскакивание под правильным углом от плоской стенки:


Код:

onClipEvent (enterFrame) {
        if ((this.hitTest(_root.rocket._x, _root.rocket._y+_root.rocket._height/2, true)) or (this.hitTest(_root.rocket._x, _root.rocket._y-_root.rocket._height/2, true)) or (this.hitTest(_root.rocket._x-_root.rocket._width/2, _root.rocket._y, true)) or (this.hitTest(_root.rocket._x+_root.rocket._width/2, _root.rocket._y, true))) {
                _root.rocket.dY = Math.abs(_root.rocket.dY)*_root.rocket.sopr;
                _root.rocket.dX = _root.rocket.dX*_root.rocket.sopr;
                udar = _root.rocket.dY*5+_root.rocket.dX*5*-1;
                if (udar<10) {
                        udar = 0;
                }
                _root.rocket.health -= udar;
        }
}

И то если построить прямоугольник, то будет отскакивать только от одной его стороны. Теперь сам вопрос, как сделать правильное отскакивание от "кривого" обьекта?

ApTypbIч 30.01.2006 22:39

А я делаю не так...вот так: если хиттест то скорость=скорость-2*скорость. Значение скорости меняется на отрицательное.Получается что обьект отскакивает. А вот насчет кривых не знаю, не использовал.

nouba 31.01.2006 14:07

Во-первых: пользуйся тегом код а то ваше неудобно читать
Во-вторых: если у тебя будет много обьектов об которые должна ударятся твоя ракета то тормоза начнутся дикие если все хиттестит
И на последок: если уж на хиттестах тогда для отскакивания от всех сторон тебе поможет getBounds() но добится реалистики удара таким макаром тебе будет сложно :) ибо не забывай то бывают ситуаци когда от стенки ракета ударяется об другую стенку.. и тут уже без векторов не обойтись...
а еще можеш читнуть вот эту статью
http://www.harveycartel.org/metanet/...tutorialA.html

ApTypbIч 31.01.2006 14:23

Цитата:

Сообщение от nouba
если уж на хиттестах

А что можно использовать вместо хиттестов?

UrbanMan 31.01.2006 14:37

Цитата:

А я делаю не так...вот так: если хиттест то скорость=скорость-2*скорость. Значение скорости меняется на отрицательное.Получается что обьект отскакивает. А вот насчет кривых не знаю, не использовал.
При твоём методе отскакивание не очень реалистичное.

Цитата:

если у тебя будет много обьектов об которые должна ударятся твоя ракета то тормоза начнутся дикие если все хиттестит
А какая есть альтернатива?

nouba 31.01.2006 14:50

а ВОТ! и альтернатива :)

ApTypbIч 31.01.2006 15:00

Вложений: 1
Цитата:

Сообщение от UrbanMan
При твоём методе отскакивание не очень реалистичное.

Не знаю... вот сам смотри

nouba 31.01.2006 15:17

Посмотрел.... не огу понять зачем ты прототайпиш Нумбер всередине онЕнтерФрейм ???
И код можно было написать раз в 5 короче ;)

ApTypbIч 31.01.2006 15:22

да знаю, там половина - лишнее, просто руки не дошли убрать, это я делал когда надо было притяжение реалистичное сделать
а нумбер для округленя значений, во избежание багов, только сам не пойму зачем он там 10 разз.... ;) Вопрос: А как без хиттестов та обойтись?

nouba 31.01.2006 15:27

Я же кинул ссылку на дельную статью... там подробно описано ;) *смотри выше*


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

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