[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Бег по неровным(наклонным) поверхностям
FroZДата: Воскресенье, 12 Октября 2008, 18:35 | Сообщение # 1
Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус:
Вобщем недавно начал вникать в програмиррование на блице, появилась идея сделать простую бегалку-платформер с видом сзади, с созданием и загрузкой уровня, прыжком, анимациямми и прочим я разобрался, но встала такая проблема:
К примеру имеем наклонную поверхнасть 45 градусов на неё сверху падает объект-игрок, задача - повернуть модель игрока и соответственно подкоректировать гравитацию. Т.е. при беге по наклонным поверхностям, впллоть до 90 градусов надо "ставить" модель персонажа на эту поверхность и изменять направление вектора гравитации чтобы он был перпендекулярен плоскостью под игроком.
Если бы я мог получить угол наклона полигона объекта с которым столкнулся игрок, было бы вообще замечательно, ну что скажете? Помогите нубу пожалуйста smile Примеров с такой физикой не нашёл( Возможно вообще получать информацию отдельно по полигону меши в блитце? Если нет то как же такое реализуется??


[VeXeD Signature] All come to Mobius soon >:]
 
KonstantinДата: Воскресенье, 12 Октября 2008, 22:07 | Сообщение # 2
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус:

Проектов: Множество незаконченных
Найди пример в blitz под названием driver, а там самому можно разобраться с вектарами.
 
FroZДата: Понедельник, 13 Октября 2008, 18:47 | Сообщение # 3
Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус:
Огромное спасибо Konstantin На основе этого примера сделал такую физику.
У меня ещё два вопроса angel
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%
Статус:

Проектов: Множество незаконченных
Ну брат ты сейчас на уровне, на котором я был год назад, только прикоснувшись к 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
Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус:
во, спасибо! только я уже эти два вопроса решил сам smile CollisionEntity() отлично подошла) для определения с каким именно объектом из множество объектов этого класса произошло столкнновение
Но ещё хочу спросить, есть возможность создавать интерфейс, ну там кнопки, комбобоксы, чекбоксы и прочее?

а, и ещё у меня есть годовой опыт программирования на делфи, поэтому основные понятия массив-функция-переменная-тип данных я знаю)

type monetka
field entity
end type

это случаем не аналог record в делфи? позволяет создавать свои объекты?! это то что нужно!! Ещё раз спасибо roll

Quote
Но мой тебе совет - изучи функции blitz.
согласен, но просто учить функцию за функцией скучно, поэтому я учусь делая небольшую но довольно ёмкую игру)


[VeXeD Signature] All come to Mobius soon >:]
 
KonstantinДата: Среда, 15 Октября 2008, 19:42 | Сообщение # 6
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус:

Проектов: Множество незаконченных
Интересно...

Я изучал Blitz после C++ точно так-же...

 
ПрохожийДата: Пятница, 17 Октября 2008, 08:13 | Сообщение # 7
Группа: Гости





Елки млин константин я кеанешно сори - но ты сам нуб - потому штоесть такакя команда cundcollisions - вот ее нада юзать Froz. Она работает с циклами обьектов и возвращает тру если столкнлся хоть с 1 монеткой из массива. Ну поразбирайся кароч - я арканоид делал такой командой - работает как надо :). Удачи !
 
FroZДата: Пятница, 17 Октября 2008, 11:28 | Сообщение # 8
Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус:
Спасиб, запомню ,но меня пока и CollisionEntity(player,CountCollisions(player)) вполне устраивает, да и массив в таком случае не надо перебирать
У меня тут вопрос назрел, помогите выбрать оптимальный вариант pray
Вобщем у меня на уровне есть несколько типов объектов - ну там монетки, деревья и прочее. Расставлять вручную кодом на каждом уровне муторно и
вообще совершенно не рационально, поэтому я придумал два варианта:

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 и тд) а патом программно
находить мешь объекта на уровне и выделять её в отдельный объект, после чего работать с ним. Нужно только знать кол-во объектов на уровне. Вот только
думаю так нельзя в блице, по крайней мере подходящих функций я не заметил..

Подскажите пожалуйста как лучще делать, сам склоняюсь к первому способу, подобное яуже делал в делфи и также я точно уверен, что это осуществимо в блице)
А может вы знаете способ поэффективней/проще roll ?


[VeXeD Signature] All come to Mobius soon >:]
 
ПрохожийДата: Четверг, 23 Октября 2008, 09:38 | Сообщение # 9
Группа: Гости





можете выложить driver? а то у мене в блицэ нету. И еще start.bb которй в папке samples/
А то я ненашол sad
 
AD77RootДата: Четверг, 23 Октября 2008, 10:46 | Сообщение # 10
Гиперсексуальная белка
Группа: Администрация
Сообщений: 1226
Награды: 0
Статус:

Профессия: Администратор
Прохожий, лови
Прикрепления: driver.rar (245.3 Kb) · start.bb (0.0 Kb)


 
  • Страница 1 из 1
  • 1
Поиск: