Просмотр полной версии : Столкновение машины с препятствиями
UncleBoB
09.02.2009, 21:11
Я делаю ядро рпг, где в главной роли будет машина. Возник вопрос о столкновениях с предметами. Если использовать hitTest, то каждый угол предмета придется описывать вручную и скорее всего создавать уровни програмно? А нельзя ли использовать другие способы, например сделать слой с черно-белыми фигурами, повторяющими карту. Черный - нельзя проехать, белый - можно (Сделать проверку на цвет). Если сможете подсказать более быстрый способ, буду очень блогодарен.
И вторая идея. На этом же ядре сделать игру, где нужно как можно быстрее разбить машину. Сделать проверку на каждый элемент машины (Бампер, капот, лобовое стекло), и при столкновенни проигрывать анимацию до следущего состояния (Идеальное, царапины и потерта краска, вмятины, отсутствие детали).
Выскажете пожалуйста свои идеи по этому поводу.
Вот то, что сделал за 2 часа работы (http://narod.ru/disk/5580261000/bigFOOT.swf.html), с использованием уроков с http://xitri.com/ (Передвижение - стрелки, тормоз - пробел, контрол - азот) (Просьба, не бейте палками. До анимации и эффектов пока не дошел).
Psycho Tiger
09.02.2009, 21:28
Если хотите игру не подзаборного уровня, - однозначно математика, да (%
UncleBoB
09.02.2009, 21:34
Спасибо.
Svi_stok
09.02.2009, 23:46
Хорошая заготовка но что то не то графика класс Вы конечно извините за критику но у меня такое чувство что движение машины прорисовывается в каждом следующем кадре
UncleBoB
10.02.2009, 00:54
За критику даже спасибо. Я тоже обратил внимание на это. Думаю проблему можно решить повысив значение Frames Per Second, но снизив другие игровые атрибуты.
UncleBoB, очень специфичный способ управления. У кого подсмотрели?
gloomyBrain
10.02.2009, 04:57
Думаю проблему можно решить повысив значение Frames Per Second, но снизив другие игровые атрибуты.
Я бы не привязывался к онЭнтерФрэйм, а сделал через таймер. При любом фпс(на любом компьютере) будет примерно одинаково.
Про управление - на настоящем автомобиле когда отпускаешь руль - он сам выравнивается. Здесь же - чтобы повернуть налево, затем поехать прямо - нужно сначала нажать налево, а потом направо. Попробуйте сделать автовыравнивание руля - увидите сразу разницу в управлении
у меня такое чувство что движение машины прорисовывается в каждом следующем кадре
Ну что вы... так не бывает... =)
сори за сарказм, просто очень улыбнуло
По поводу пересечения с дорогой - есть такие предположения:
- у мувика есть габаритный контейнер (прямоугольник)
- у мувика есть координаты в глобальном пространстве
- внутри мувика есть несколько точек (углы прямоугольника), которые надо проверять на пересечение с препятствиями.
Что делаем:
берем каждую точку и делаем с ней примерно то же, что написано в хэлпе:
var myPoint:Object = {x:10, y:10}; // create your generic point object
this.createEmptyMovieClip("myMovieClip", this.getNextHighestDepth());
myMovieClip._x = 100; // _x for movieclip x position
myMovieClip._y = 100; // _y for movieclip y position
myMovieClip.localToGlobal(myPoint);
trace ("x: " + myPoint.x); // 110
trace ("y: " + myPoint.y); // 110
Ну а дальше проверяем точку на пересечение с любым препятствием (весь плюс метода в том, что препятствие может быть произвольной формы) с помощью hitTest()
Кто сказал что с использованием интервала или атймаута будет "При любом фпс(на любом компьютере) будет примерно одинаково.". Снижение фпс повлеяет и на интервалы тоже. Главное чтобы была 1 главная циклическая функция раздаюшая события нового кадра всем классам которым надо, а будет это энтер фрейм или интервал менее важно, но энтерфрейм будет лучше -_-
UncleBoB
10.02.2009, 16:48
UncleBoB, очень специфичный способ управления. У кого подсмотрели?
С использованием уроков с http://xitri.com/
Чувство, что движение машины прорисовывается в каждом следующем кадре должно пропасть. Обновил (http://narod.ru/disk/5600716000/bigFOOT%20(copy%202).swf.html).
Подумаю над тем, чтобы колеса возвращались в исходное положение. Извиняюсь за оффтоп, но забыл скрипт, который добавляет listener на клавишу, чтобы можно было сделать проверку на отпускание.
gloomyBrain, а можно по подробнее об этом способе?
Если у кого-нибудь из участников форума есть желание помочь со столкновениями (Вышлю исходники), буду очень благодарен.
gloomyBrain
10.02.2009, 18:53
А куда подробнее? =) почитайте хелп, зачем его сюда выкладывать...
По-простому - localToGlobal может перевести координаты внутри клипа в координаты на сцене. Вроде даже из названия понятно =)
Кстати, если не много подвигаться, а потом остановится, то машину безудержно потянет вниз
Maxi_Hunter
10.02.2009, 20:49
ZIK68, это наверное просто автор уменьшает коэффициент скорости алгоритмом:
if (Speed >= 0 ) Speed--;
Отсюда у него и балансное положение = -1 ))
Psycho Tiger
10.02.2009, 21:03
Скорее, если так то > и 0.5-- = -0.5
Maxi_Hunter
10.02.2009, 22:03
Да, тоже вариант :)
gloomyBrain
10.02.2009, 22:19
Кстати, UncleBob
для некоторых способов реализации проверок на столкновения применяется такой метод:
- есть функция onEnterFrame
- внутри onEnterFrame проверяется, когда был отрендерен предыдущий кадр (через Date.getTime())
- исходя из полученного времени, прошедшего между кадрами, определяем число итераций проверки объектов на столкновения
ну и проверяем, соответственно =)
Maxi_Hunter
10.02.2009, 23:05
Нечто похожее делаю сейчас. Кучу всего недоделано, но потихоньку продвигается) движок для игры-стрелялки. Мне кажется движения довольно симпатичны. Основная проблема возникла как ни странно в поиске врагами пути к игроку, если последнего отделяют какие-то препятствия...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.