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

UncleBoB 09.02.2009 21:11

Столкновение машины с препятствиями
 
Я делаю ядро рпг, где в главной роли будет машина. Возник вопрос о столкновениях с предметами. Если использовать hitTest, то каждый угол предмета придется описывать вручную и скорее всего создавать уровни програмно? А нельзя ли использовать другие способы, например сделать слой с черно-белыми фигурами, повторяющими карту. Черный - нельзя проехать, белый - можно (Сделать проверку на цвет). Если сможете подсказать более быстрый способ, буду очень блогодарен.

И вторая идея. На этом же ядре сделать игру, где нужно как можно быстрее разбить машину. Сделать проверку на каждый элемент машины (Бампер, капот, лобовое стекло), и при столкновенни проигрывать анимацию до следущего состояния (Идеальное, царапины и потерта краска, вмятины, отсутствие детали).

Выскажете пожалуйста свои идеи по этому поводу.

Вот то, что сделал за 2 часа работы, с использованием уроков с 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, но снизив другие игровые атрибуты.

dimarik 10.02.2009 01:27

UncleBoB, очень специфичный способ управления. У кого подсмотрели?

gloomyBrain 10.02.2009 04:57

Цитата:

Думаю проблему можно решить повысив значение Frames Per Second, но снизив другие игровые атрибуты.
Я бы не привязывался к онЭнтерФрэйм, а сделал через таймер. При любом фпс(на любом компьютере) будет примерно одинаково.

Про управление - на настоящем автомобиле когда отпускаешь руль - он сам выравнивается. Здесь же - чтобы повернуть налево, затем поехать прямо - нужно сначала нажать налево, а потом направо. Попробуйте сделать автовыравнивание руля - увидите сразу разницу в управлении
Цитата:

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

По поводу пересечения с дорогой - есть такие предположения:
- у мувика есть габаритный контейнер (прямоугольник)
- у мувика есть координаты в глобальном пространстве
- внутри мувика есть несколько точек (углы прямоугольника), которые надо проверять на пересечение с препятствиями.

Что делаем:
берем каждую точку и делаем с ней примерно то же, что написано в хэлпе:
Код AS1/AS2:

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()

qazwsx 10.02.2009 05:20

Кто сказал что с использованием интервала или атймаута будет "При любом фпс(на любом компьютере) будет примерно одинаково.". Снижение фпс повлеяет и на интервалы тоже. Главное чтобы была 1 главная циклическая функция раздаюшая события нового кадра всем классам которым надо, а будет это энтер фрейм или интервал менее важно, но энтерфрейм будет лучше -_-

UncleBoB 10.02.2009 16:48

Цитата:

Сообщение от dimarik (Сообщение 797086)
UncleBoB, очень специфичный способ управления. У кого подсмотрели?

Цитата:

Сообщение от UncleBoB
С использованием уроков с http://xitri.com/

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

Подумаю над тем, чтобы колеса возвращались в исходное положение. Извиняюсь за оффтоп, но забыл скрипт, который добавляет listener на клавишу, чтобы можно было сделать проверку на отпускание.

gloomyBrain, а можно по подробнее об этом способе?

Если у кого-нибудь из участников форума есть желание помочь со столкновениями (Вышлю исходники), буду очень благодарен.

gloomyBrain 10.02.2009 18:53

А куда подробнее? =) почитайте хелп, зачем его сюда выкладывать...
По-простому - localToGlobal может перевести координаты внутри клипа в координаты на сцене. Вроде даже из названия понятно =)


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

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