Бег по неровным(наклонным) поверхностям
|
|
FroZ | Дата: Воскресенье, 12 Октября 2008, 18:35 | Сообщение # 1 |
![FroZ](http://igrostroenie.my1.ru/avatar/37/147955.jpg) Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Вобщем недавно начал вникать в програмиррование на блице, появилась идея сделать простую бегалку-платформер с видом сзади, с созданием и загрузкой уровня, прыжком, анимациямми и прочим я разобрался, но встала такая проблема: К примеру имеем наклонную поверхнасть 45 градусов на неё сверху падает объект-игрок, задача - повернуть модель игрока и соответственно подкоректировать гравитацию. Т.е. при беге по наклонным поверхностям, впллоть до 90 градусов надо "ставить" модель персонажа на эту поверхность и изменять направление вектора гравитации чтобы он был перпендекулярен плоскостью под игроком. Если бы я мог получить угол наклона полигона объекта с которым столкнулся игрок, было бы вообще замечательно, ну что скажете? Помогите нубу пожалуйста Примеров с такой физикой не нашёл( Возможно вообще получать информацию отдельно по полигону меши в блитце? Если нет то как же такое реализуется??
[VeXeD Signature] All come to Mobius soon >:]
|
|
| |
Konstantin | Дата: Воскресенье, 12 Октября 2008, 22:07 | Сообщение # 2 |
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Проектов: Множество незаконченных
| Найди пример в blitz под названием driver, а там самому можно разобраться с вектарами.
|
|
| |
FroZ | Дата: Понедельник, 13 Октября 2008, 18:47 | Сообщение # 3 |
![FroZ](http://igrostroenie.my1.ru/avatar/37/147955.jpg) Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Огромное спасибо Konstantin На основе этого примера сделал такую физику. У меня ещё два вопроса 1) Сделал модель монетки - такие должны лежать на уровне, игрок сообирает их прикосаясь к ним. Вопрос, т.к. монетка будет не одна как их размножить и (главное) как обработать столкновение с каждой монеткой? Насчёт размножить я догадываюсь - CopyEntity или массив, а как узнать, когда игрок сталкивается с определённой монеткой? 2) Что-то не разобрался с AlignToVector(Перепробывал множество значений, но модель игрока поворачивалась всегда не в ту сторону..), мне нужно, чтобы в прыжке игрок поворачивался к земле и гравитация притягивала его уже не к поверхности(допустим он стоит на поверхности с углом наклона 60 градусов) может я вообще не верно использовал эту функцию?)
[VeXeD Signature] All come to Mobius soon >:]
Сообщение отредактировал FroZ - Понедельник, 13 Октября 2008, 18:50 |
|
| |
Konstantin | Дата: Среда, 15 Октября 2008, 16:55 | Сообщение # 4 |
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Проектов: Множество незаконченных
| Ну брат ты сейчас на уровне, на котором я был год назад, только прикоснувшись к blitz случайно. Мой совет тебе изучать функции. С их помощью можно создавать свыше 100 объектов и каждый будет проверять себя на какое-либо действие. 1) ;пиши в главном цикле, там где типы type monetka field entity end type ;создание монетки function create monetka(x#,y#,z#) m.monetka=new monetka m\entity=createcube() positionentity m\entity,x#,y#,z# entitytype m\entity,object ;Пишеш свой тип end function ;Проверка объекта function UpdateMonetka() for m.monetka=each monetka if entitycollided(m\entity,World) freeentity m\entity delete m end if next end function Вот вроде и всё. Но мой тебе совет - изучи функции blitz. 2) Для начала не используеш ли ты pointentity? Если да, то с ним нечего не получится.
Сообщение отредактировал Konstantin - Среда, 15 Октября 2008, 17:03 |
|
| |
FroZ | Дата: Среда, 15 Октября 2008, 18:24 | Сообщение # 5 |
![FroZ](http://igrostroenie.my1.ru/avatar/37/147955.jpg) Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| во, спасибо! только я уже эти два вопроса решил сам CollisionEntity() отлично подошла) для определения с каким именно объектом из множество объектов этого класса произошло столкнновение Но ещё хочу спросить, есть возможность создавать интерфейс, ну там кнопки, комбобоксы, чекбоксы и прочее? а, и ещё у меня есть годовой опыт программирования на делфи, поэтому основные понятия массив-функция-переменная-тип данных я знаю) type monetka field entity end type это случаем не аналог record в делфи? позволяет создавать свои объекты?! это то что нужно!! Ещё раз спасибо Quote Но мой тебе совет - изучи функции blitz. согласен, но просто учить функцию за функцией скучно, поэтому я учусь делая небольшую но довольно ёмкую игру)
[VeXeD Signature] All come to Mobius soon >:]
|
|
| |
Konstantin | Дата: Среда, 15 Октября 2008, 19:42 | Сообщение # 6 |
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Проектов: Множество незаконченных
| Интересно... Я изучал Blitz после C++ точно так-же...
|
|
| |
Прохожий | Дата: Пятница, 17 Октября 2008, 08:13 | Сообщение # 7 |
Группа: Гости
| Елки млин константин я кеанешно сори - но ты сам нуб - потому штоесть такакя команда cundcollisions - вот ее нада юзать Froz. Она работает с циклами обьектов и возвращает тру если столкнлся хоть с 1 монеткой из массива. Ну поразбирайся кароч - я арканоид делал такой командой - работает как надо :). Удачи !
|
|
| |
FroZ | Дата: Пятница, 17 Октября 2008, 11:28 | Сообщение # 8 |
![FroZ](http://igrostroenie.my1.ru/avatar/37/147955.jpg) Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Спасиб, запомню ,но меня пока и CollisionEntity(player,CountCollisions(player)) вполне устраивает, да и массив в таком случае не надо перебирать У меня тут вопрос назрел, помогите выбрать оптимальный вариант Вобщем у меня на уровне есть несколько типов объектов - ну там монетки, деревья и прочее. Расставлять вручную кодом на каждом уровне муторно и вообще совершенно не рационально, поэтому я придумал два варианта: 1)Создать спец.файл с координатами объектов и вообще всей инфой по уровню вида Code count_coins 15 count_trees 24 ... LEVEL levels\level1.b3d ... COIN 12 21 11 true TREE 45 17 12, 45 COIN 24 31 51 true ... COIN 32 7 21 true TREE 45 17 12, 45 C форматом строки SOME_OBJECT X_cord Y_cord Z_cord EXTRA_PARAMETERS - параметры с пятого и далее зависят от типа объекта, к примеру у монеток есть параметр указывающий, надо анимировать или нет Первые строки указывают кол-во объектов одного типа на уровне. А потом в программе уже написать процедуру для считывания данных этого файла и загрзке уровня, создания массивов объектов их настройке и расстановке. минус один нужно ещё составить такой файл, а как это сделать? не на глаз же вблице подгонять каждый из десятков(сотен?) объектов? Хотя думаю есть редакторы, позволяющие расставить объекты на уровне и узнать их "блицевские" координаты. 2)Создать уровень полностью(со всеми объектами) в тридемаксе, задаь объектам строго определённые имена(coin_0,coin_1,coin_2 и тд) а патом программно находить мешь объекта на уровне и выделять её в отдельный объект, после чего работать с ним. Нужно только знать кол-во объектов на уровне. Вот только думаю так нельзя в блице, по крайней мере подходящих функций я не заметил.. Подскажите пожалуйста как лучще делать, сам склоняюсь к первому способу, подобное яуже делал в делфи и также я точно уверен, что это осуществимо в блице) А может вы знаете способ поэффективней/проще ?
[VeXeD Signature] All come to Mobius soon >:]
|
|
| |
Прохожий | Дата: Четверг, 23 Октября 2008, 09:38 | Сообщение # 9 |
Группа: Гости
| можете выложить driver? а то у мене в блицэ нету. И еще start.bb которй в папке samples/ А то я ненашол
|
|
| |
AD77Root | Дата: Четверг, 23 Октября 2008, 10:46 | Сообщение # 10 |
![AD77Root](/avatar/46/899938.jpg) Гиперсексуальная белка
Группа: Администрация
Сообщений: 1226
Награды: 0
Статус: ![](/on.gif)
Профессия: Администратор
| Прохожий, лови
|
|
| |