Форум: "Игры";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизДавайте попробуем развить демку dceDemo из состава GLScene ? Найти похожие ветки
← →
Ктото (2004-09-17 02:54) [0]Потому, что она похожа на недоделанный игровой движок. (Графика плюс коллизии.) И можно попытаться его доделать. Или хотя бы обсудить чего ей нехвататет, чтобы стать игрой.
Сама демка dceDemo, если кто не знает, лежит тут :
http://cvs.sourceforge.net/viewcvs.py/glscene/Demos/behaviours/DCEDemo/
Я пока сделал небольшой редактор Джиэльсценовского мира, с возможностью сохранять/загружать отредактированный мир в ini-файл. Ini-файлы удобны тем, что их можно легко подредактировать ручками. Например, вставить несколько однотипных объектов с небольшим смещением координа, и таким образом получить, например забор, или несколько этажей здания. И т. п.
Скачать можно тут : http://dcegame.narod.ru/dcegame.html
Исходник к демке прилагается. В файле save.ini находится небольшой уровень, сделанный в редакторе.
Вопросы, пожелания ? СтОит ли ? Куда двигаться дальше ?
← →
DeadMeat © (2004-09-17 17:32) [1]Я не совсем догнал, как ты хочешь ее доделать?
В принципе превратить в некий шутер проще простого...
---
...Death Is Only The Begining...
← →
kastik (2004-09-17 20:23) [2]> Ктото (17.09.04 02:54)
*.ini - юзать для подобных целей, просто не рационально. Они очень медленные. Дело в том, что они предназначены для хранения настроек различных, а не для хранения информации об уровне.
← →
miek (2004-09-17 21:10) [3]>Они очень медленные
Субъективно судишь, это смотря как грузить.
← →
Ктото (2004-09-18 01:26) [4]
> DeadMeat © (17.09.04 17:32) [1]
> Я не совсем догнал, как ты хочешь ее доделать?
> В принципе превратить в некий шутер проще простого...
Ну, преврати, раз проще простого. Да выложит тут исходник. Только ты ведь знаешь, что это совсем не просто как кажется, и очень трудоёмко.
> kastik (17.09.04 20:23) [2]
> > Ктото (17.09.04 02:54)
> *.ini - юзать для подобных целей, просто не рационально.
А ты сравни скорость загрузки демки с ini-файлом приложенном к демке, и без него, и убедишься, что оно почти не отличается.
А там 58 3ds-объектов.
← →
kastik (2004-09-18 02:50) [5]>Ктото (18.09.04 01:26) [4]
Я не хочу развивать спор на тему *.ini файлов. Просто я убедился на собственной практике в их медленной работе. Вот когда будет записей за несколько сотен, тогда ты поймешь, о чем я говорю.
Они же все-таки не предназначены для хранения базы данных. Просто я тоже однажды был так наивен и пытался хранить в них различную информацию, как в базе данных. В итоге напоролся на грабли.
← →
Ктото (2004-09-18 07:21) [6]
> kastik (18.09.04 02:50) [5]
> >Ктото (18.09.04 01:26) [4]
>
> Я не хочу развивать спор на тему *.ini файлов. Просто я
> убедился на собственной практике в их медленной работе.
> Вот когда будет записей за несколько сотен, тогда ты поймешь,
> о чем я говорю.
1 Поставь эксперимент и убедись сам.
2 Для сравнения, можешь посчитать количество статичных объектов, скажем в Сэме, который аналогичен по строению уровней.
3 Задайся вопросом, зачем вообще игры делят на уровни.
> Просто я тоже однажды был так наивен
Запости свой код, наивный.
← →
kastik (2004-09-18 15:26) [7]>Ктото (18.09.04 07:21) [6]
Ты наверное меня не правильно понял. Дело в том, что сам модуль TIniFiles с файлами больших размеров медленно работает.
1) Эксперементы я ставил.
2) Почему игры делят на уровни я тоже знаю.
3) Не думаю что в Сэме уровни хранятся в обычных *.ini файлах.
Код:
var
MyLevel: TIniFile;
begin
MyLevel:= TIniFile.Create("c:\my_level.ini");
with MyLevel do begin
MyObject.Name:=ReadString("mysection","name","noname");
MyObject.X:=ReadString("mysection","x","0.0");
MyObject.Y:=ReadString("mysection","y","0.0");
MyObject.Z:=ReadString("mysection","z","0.0");
end;
MyLevel.Free;
end;
Это код не из той игры, где я читаю подобным способом уровни. Это просто пример чтения ini файла используя модуль TIniFiles. Писал на "бум".
---
Я извиняюсь, но это уже, похоже, офф-топ
← →
DeadMeat © (2004-09-18 18:37) [8]
> [4] Ктото (18.09.04 01:26)
> Ну, преврати, раз проще простого. Да выложит тут исходник.
> Только ты ведь знаешь, что это совсем не просто как кажется,
> и очень трудоёмко.
Видимо я этого не знал, поэтому мне легче... ;-)
На самом деле, вот это я делал гдето.... часа 3-3.5. Есть пара глюков, но как я уже сказал, это "некий шутер". Стрелялку тоже можно прикрутить без проблем...
Управление:
W,S,A,D - движение
CTRL - сидение
SHIFT - хождение
SPACE - прыгание
Линк - http://www.deadmeat.nightmail.ru/minishooter.rar
GLScene, который использовался - http://www.deadmeat.nightmail.ru/Source.rar
---
...Death Is Only The Begining...
← →
DeadMeat © (2004-09-18 18:38) [9]Кстати. Больше половины всего этого, есть в демках самого GLScene...
---
...Death Is Only The Begining...
← →
Колбасьев © (2004-09-18 21:36) [10]А exe нельзя, но без maps и model? А то у меня нет GLScene, а посмотреть хочеться! Да и ошибки открытия разные бывают, а так exe без проблем.
← →
DeadMeat © (2004-09-18 22:16) [11]Вот *.ЕХЕ
http://deadmeat.nightmail.ru/Project1.rar
Забыл добавить.
Управление мышью. А если кнопочку зажать, то можно камеру отдельно покрутить (GLScene-овский стандарт)
---
...Death Is Only The Begining...
← →
Ктото (2004-09-19 01:40) [12]
> kastik (18.09.04 15:26) [7]
> 3) Не думаю что в Сэме уровни хранятся в обычных *.ini файлах.
1. Посмотри в Vice City файлы типа *.ide и *.ipl .
2. Можешь предложить лучший способ хранения - предложи.
> Это код не из той игры, где я читаю подобным способом уровни.
> Это просто пример чтения ini файла используя модуль TIniFiles.
> Писал на "бум".
Да, ладно, на "бум". Наверное из моей демки взял. :)
> DeadMeat © (18.09.04 18:37) [8]
>
> > [4] Ктото (18.09.04 01:26)
>
>
> > Ну, преврати, раз проще простого. Да выложит тут исходник.
>
> > Только ты ведь знаешь, что это совсем не просто как кажется,
>
> > и очень трудоёмко.
>
> Видимо я этого не знал, поэтому мне легче... ;-)
> На самом деле, вот это я делал гдето.... часа 3-3.5. Есть
> пара глюков, но как я уже сказал, это "некий шутер". Стрелялку
> тоже можно прикрутить без проблем...
> Управление:
> W,S,A,D - движение
> CTRL - сидение
> SHIFT - хождение
> SPACE - прыгание
Поставил скачиваться. Кстати, есть ли какие компоненты специальные, чтобы настраивать управление ? А то самому лепить как-то лень.
Кстати, не знаешь чем лучше игры потрошить ? Сэма, например, или ГТА ?
← →
Ктото (2004-09-19 01:49) [13]
> DeadMeat © (18.09.04 22:16) [11]
> Вот *.ЕХЕ
> http://deadmeat.nightmail.ru/Project1.rar
> GLScene, который использовался -
> http://www.deadmeat.nightmail.ru/Source.rar
Файлы не скачиваются.
При компиляции проекта пишет, что не может найти файла animation.cfg .
Изучи стандарт стилевого оформления кода : http://delphi.vitpc.com/article/coderules.htm
Для сдвигания блоков по горизонтали используй клавиши Shift+Ctrl+I и Shift+Ctrl+U
← →
Ктото (2004-09-19 02:10) [14]
> DeadMeat © (18.09.04 22:16) [11]
Поставил файл animation.cfg из GLScene"овской демки Q3Demo. Подошёл, но криво, анимация не соответствует. Выложи лучше оригинальный.
Как отекстуривать уровни ? Не одной единственной текстурой, а полноценно ?
И, кстати, вопрос на засыпку. Если это шутер, то где же стрельба ? :)
← →
DeadMeat © (2004-09-19 09:26) [15]
> Файлы не скачиваются.
и
> При компиляции проекта пишет, что не может найти файла animation.cfg
Недопонял... В смысле если он не скачивается, то.... А при компиляции или при запуске?
> Изучи стандарт стилевого оформления кода : http://delphi.vitpc.com/article/coderules.htm
Нуу... Я ведь всегда писал только для себя. Вот в этом и есть моя проблема. Мало кто мой код понимает, хотя я сам в нем отлично ориентируюсь... Давно уже собирался переучиться, да все лень...
> Поставил файл animation.cfg из GLScene"овской демки Q3Demo.
> Подошёл, но криво, анимация не соответствует. Выложи лучше
> оригинальный.
Странно все это... Он там был. Но все равно выложу...
> Как отекстуривать уровни ? Не одной единственной текстурой,
> а полноценно ?
Я уровень не рисовал, а взял готовый. У него есть все текстуры и они правильно ложатся. Но я решил их не включать в пакет, чтобы уменьшить объем хоть както... Я и модели покромсал немного для этого... Но animation.cfg там точно был.
> И, кстати, вопрос на засыпку. Если это шутер, то где же
> стрельба ? :)
см [8] DeadMeat © (18.09.04 18:37), "Стрелялку тоже можно прикрутить без проблем..."
Делается это за пару тройку минут... Щас у меня инета мало осталось, поэтому смогу залить только завтра (или послезавтра)...
---
...Death Is Only The Begining...
← →
DeadMeat © (2004-09-19 09:40) [16]Граждане!!! Никто не знает, с чем у Winrar ассоциируется animation.cfg??
А то пару раз сделал архив, и он (файл этот) исчез как из папки, так и из архива!!!!! На третий все нормально. Шо за чушь?? В том архиве (который выложил) его действительно нет. И в моих папках тоже!! Пришлось лезть опять в кваку и перепысывать обратно этот файл. Создал архив. Дай думаю проверю. Смотрю - НЕТУ!!! Я еще раз, тоже самое. Я с кресла сполз!! На третий раз нормально.... Мож я с ума схожу?
Какбы там ни было, вот он отдельно
http://deadmeat.nightmail.ru/animation.cfg
Как уже сказал, потом докручу все остальное...
---
...Death Is Only The Begining...
← →
Ктото (2004-09-20 01:30) [17]> DeadMeat ©
> Недопонял... В смысле если он не скачивается, то.... А при
> компиляции или при запуске?
Из трёх ссылок две перечисленные не скачиваются.
> Нуу... Я ведь всегда писал только для себя. Вот в этом и
> есть моя проблема.
Стандарт стилевого оформления родился, чтобы облегчить чтение кода. Когда все пишут в одном стиле, то чужой код воспринимается как свой собственный. Ненадо быть дикарём. Это же азбука. Просто изучи, да придерживайся.
> Я уровень не рисовал, а взял готовый. У него есть все текстуры
> и они правильно ложатся.
Уровень узнал. Как ложаться текстуры ? Они же по разным папка раскиданы. Или как отредактировать bsp-файл ? Можно ли его конвертировать в 3ds, которые можно редактировать в МилкШэйпе ?
← →
Ктото (2004-09-20 01:34) [18]Про мышь.
Курсор лучше прятать. А позицию в которой удерживаем мышь лучше считывать при Ресайзе, а не в Кадансере. Потому, что это требует вызова функции, что притормаживает работу кадансера.var
isMouseFix : Boolean = False; // Мышь зафиксирована
PosOfFixMouse : TPoint; // Позиция на которой удерживаем мышь.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_F3) and (GLSceneViewer1.Camera = GLCamera1) then begin // Фиксируем/расфиксируем мышь кнопкой F3
isMouseFix := not isMouseFix;
ShowCursor(not isMouseFix);
if isMouseFix then SetCursorPos(PosOfFixMouse.X, PosOfFixMouse.Y)
end;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
PosOfFixMouse := Point(Left +ClientWidth div 2, Top +ClientHeight div 2); // Точка фиксации мыши.
end;
← →
DeFenix (2004-09-20 11:09) [19]Где можно скачать последнюю версию GlScene, чтобы эта демка работала. Пробовал скачать у DeadMeat-a, но файл по ходу голимый, скачиваеться то 200kb,то 800. Ссылочку кто нибудь дайте плз.
← →
DeadMeat © (2004-09-20 19:50) [20]
> Из трёх ссылок две перечисленные не скачиваются.
Видимо nm моросит...
> Уровень узнал. Как ложаться текстуры ? Они же по разным
> папка раскиданы.
В нем указан относительный путь к каждой текстуре. Как и во всех моделях. Главное сами текстуры разместить правильно...., в смысле по папкам. А они изначально правильно лежат там все...
> Или как отредактировать bsp-файл ?
Любым редактором для кваки. QuArK например или Radiant...
> ли его конвертировать в 3ds, которые можно редактировать
> в МилкШэйпе ?
Оочень сомневаюсь. Дело в том, что это абсолютно разные вещи...
> Курсор лучше прятать.
Само собой. Но я его там оставил для проверки, а убрать просто забыл...
> Курсор лучше прятать. А позицию в которой удерживаем мышь
> лучше считывать при Ресайзе, а не в Кадансере. Потому, что
> это требует вызова функции, что притормаживает работу кадансера.
Ээмм... Не совсем догнал... Во первых зачем FormKeyDown и FormResize если они будут вызываться, только в соответствующие моменты? А мышь надо фиксировать постоянно... Или в OnMouseMove... Но лучше всего не использовать все эти обработчики, потому что они "не синхронизированы" с самим GLScene. Попробуй взять любую демку, где есть кручение камеры в OnMouseMove и сделай так, чтобы вся сцена жрала побольше ресурсов... Какуюнить карту большую или проекционные тени (GLShadowVolume)... Можно еще поставить SimpleInertia на объект... И теперь при этом, покрути камеру...
> Где можно скачать последнюю версию GlScene, чтобы эта демка
> работала. Пробовал скачать у DeadMeat-a, но файл по ходу
> голимый, скачиваеться то 200kb,то 800. Ссылочку кто нибудь
> дайте плз.
Видимо все же nm.ru
Попробуй с фатала, но может там оказаться и хуже... А вообще лучше сразу с CVS... Благо последний клиент, вроде через прокси может работать...
http://www.deadmeat.fatal.ru/GLScene/Source.rar
---
...Death Is Only The Begining...
← →
DeFenix © (2004-09-20 20:59) [21]А это-сработало! Кстати, где вы вообще берёте новые версии GlScene?!
← →
DeadMeat © (2004-09-20 21:35) [22]
> А вообще лучше сразу с CVS... Благо последний клиент, вроде
> через прокси может работать...
---
...Death Is Only The Begining...
← →
DeadMeat © (2004-09-20 21:38) [23]http://delphimaster.net/view/9-1086063518/&web=1
Пост [120]
---
...Death Is Only The Begining...
← →
Ктото (2004-09-21 01:52) [24]
> DeadMeat © (20.09.04 19:50) [20]
> В нем указан относительный путь к каждой текстуре. Как и
> во всех моделях. Главное сами текстуры разместить правильно....,
> в смысле по папкам. А они изначально правильно лежат там
> все...
А если я нехочу создавать сорок папок и раскидывать по ним текстуры ? Как сделать, чтобы всё из одной папки грузидось ?
> Ээмм... Не совсем догнал... Во первых зачем FormKeyDown
> и FormResize если они будут вызываться, только в соответствующие
> моменты?
FormKeyDown чтобы отключать фиксацию мыши. Чтобы, например, изменить размер окна.
Когда ты делаешь :SetCursorPos(left +clientwidth div 2,top +clientheight div 2);
У тебя внутри скобок два вызова функций clientwidth и clientheight. Поставь брэйкпоинт на эту строку и посмотри сам в ассемблере Ctrl+Alt+C .
А если сделать такSetCursorPos(PosOfFixMouse.X, PosOfFixMouse.Y);
то вызовов функций внутри скобок небудет. Ибо вызов вынесен в ресайз, так как точка в которую надо каждый раз возвращать мышь, меняется только при изменении размеров формы.
Вообще в кадансере от всех лишних вызовов функций лучше уходить, потому, что они отжирают много времен.
-----------
Как по-твоему лучше всего сделать взрыв в смысле просчёта коллизий ? Просто перебирать координаты всех объектов и монстров ? Но если их слишком много ?
И как быть со взрывами за стеной ? Они тогда будут убивать также как и взрыв рядом.
← →
DeadMeat © (2004-09-21 03:44) [25]
> А если я нехочу создавать сорок папок и раскидывать по ним
> текстуры ? Как сделать, чтобы всё из одной папки грузидось
> ?
Брать кваковский редактор и менять. Лучше не переделывать в другой формат, а поменять прямо в этом... Просто для кваки текстуры были общие, и поэтому их класиффицировали каждую в свою папку со своим названием "класса".
> У тебя внутри скобок два вызова функций clientwidth и clientheight
Ааа... Так вот про что ты говорил. Тогда да. Полностью согласен...
> Как по-твоему лучше всего сделать взрыв в смысле просчёта
> коллизий ?
Пока еще об этом не думал, но есть такая мысля (надо проверить).
При помощи RayCastIntersect (или кто там) получить координаты и нормаль в точке столкновения снаряда со сненой. Нормаль будет к стене. После этого считаем расстояние от точки взрыва до каждого монстра (VectorDistance). Даже если их много, то врядли перебор займет много времени. На крайний случай, можно использовать OctreeSphereSweepIntersect (кажись она).
Насчет стены.
Когда получим координаты и нормаль, то можно через PointIsInHalfSpace смотреть, кто где.
З.Ы. А давайте все соберемся (все кто с GLScene) и напишем чегонить. Кто графику, кто еще что... Мож чего и выйдед путного...? Я вот щас закончу с "приседанием" актера и выложу очередной вариант... Кстати, куда выкладывать? На fatal.ru или на nightmail.ru?
---
...Death Is Only The Begining...
← →
Ктото (2004-09-21 04:32) [26]
> DeadMeat © (21.09.04 03:44) [25]
> Кстати, куда выкладывать? На fatal.ru или на nightmail.ru?
У меня с найтмэйла нормально скачался. Один файл. Там раньше какие то глюки были. Вроде нельзя было называть файлы заглавными буквами, а то не скачивались. В остальном вроде ничего.
Насчёт стен - не очень понял. Расстояние от позишн взрыва, до позишн монстра определить можно. Но как проверить видимость ? Камеры то у нас нету и буфера тоже.
> А давайте все соберемся (все кто с GLScene) и напишем чегонить.
> Кто графику, кто еще что...
А что ещё-то ? :) Прежде чем писать игру, надо написать движок. Вернее понять как это делается. Накопить кусков кода, решить все эти проблемы с загрузками уровней, итемов, взрывами, стрельбой, монстрами и т. д. Будет движок - будет и игра.
← →
DeadMeat © (2004-09-21 09:37) [27]
> У меня с найтмэйла нормально скачался. Один файл. Там раньше
> какие то глюки были. Вроде нельзя было называть файлы заглавными
> буквами, а то не скачивались. В остальном вроде ничего.
Странно... Раньше все нормально было... Ладно буду выкладывать на фатале и только маленькими буквами называть.
> А что ещё-то ? :)
А еще надо графику набить. Если со звуками все нормально (в нете можно кучу сэмплов найти бесплантых), то с модельками и картами придется повозиться... Ведь их (модельки) надо еще и анимировать. Это в начале можно использовать чужое, но потом придется всеравно свое...
> Расстояние от позишн взрыва, до позишн монстра определить
> можно. Но как проверить видимость ?
Видимость чего?
---
...Death Is Only The Begining...
← →
DeFenix © (2004-09-21 16:44) [28]Выложи minishhoter на fatal, а то там не скачиваеться!
← →
DeFenix © (2004-09-21 16:45) [29]Выложи minishhoter на fatal, а то на nightmail не скачиваеться!
← →
DeadMeat © (2004-09-22 00:10) [30]Залил http://deadmeat.fatal.ru/minishooter.rar
Гдето 1,27Mb
Там должно быть все...
Пока еще нет проверки на столкновение снарядов (они просто летают) и нет проверки на приседание... Времени не хватает. Чуть позже добью...
> Ктото
Я еще не проверял этот метод. Но так подумал, что могут возникнуть проблемы, если выстрел попадает в угол... Вообщем надо над этим поразмыслить... Можно конечно и ODE подключить, но это не целесообразно (ИМХО).
---
...Death Is Only The Begining...
← →
Ктото (2004-09-22 01:26) [31]
> DeadMeat © (21.09.04 09:37) [27]
> А еще надо графику набить. Если со звуками все нормально
> (в нете можно кучу сэмплов найти бесплантых), то с модельками
> и картами придется повозиться... Ведь их (модельки) надо
> еще и анимировать. Это в начале можно использовать чужое,
> но потом придется всеравно свое...
Без движка, этим заниматься рано. Первый этап - это дужиок. Чтобы был качественный геймплэй. Вот если его удасться создать, то второй этап будет - создание игровых ресурсов.
> Видимость чего?
1 Как определить видимость монстра от центра взрыва ?
2 Как это сделать быстро ?
Даже когда просто стреляешь, то определение объекта по которому стреляешь слегка тормозит. А если просчитывать видимости всех монстров от всех взрывов могут быть и сильные тормоза.
> Можно конечно и ODE подключить, но это не целесообразно
> (ИМХО).
Да. Лучше без неё. Слишком сложно и трудоёмко.
← →
Ктото (2004-09-22 05:33) [32]
> DeadMeat © (22.09.04 00:10) [30]
Пытаюсь сделать эффект, когда бы взрывная волна отбрасывала назад.
Делаю так :var
iPoint : TVector; // Центр взрыва
Dist1 : Single; // Расстояние до взрыва.
BurstVector : TAffineVector; // Вектор взрывной волны.
...
begin
...
// Задаём центр взрыва.
iPoint := ... ;
// Вычисляем расстояние до взрыва
Dist1 := VectorDistance(iPoint, Player.AbsolutePosition);
// Вычисляем вектор взрыва.
BurstVector := NullVector;
BurstVector[0] := (-iPoint[0] +Player.Position.X) *Dist1 *10;
BurstVector[2] := (-iPoint[2] +Player.Position.Z) *Dist1 *10;
// Добавляем вектор взрыва в качестве толкающей Плэера силы.
TGLBDCEBody(Player.Behaviours.Behaviour[0]).AddForce(BurstVector);
И получается что Плэера после взрыва отбрасывает не назад, а куда попало. Сидел думал почему, оказалось, что потому, что AddForce добавляется с учётом Player.Direction. А вот как в нашем векторе взрыва учесть этот Player.Direction, я чего-то непойму. Может ты сообразишь ?
← →
DeadMeat © (2004-09-22 22:08) [33]Вариант на вскидку (правда извращенский как и все другие мои решения).
Держать на том же уровне вложения что и актер такой же дамми куб с присобаченным к нему ДЦЕ с такимиже параметрами что и у актера. Т.е. копия. При взрыве ставим его в теже координаты, что и актер, но с нужным нам дирекшином. Дирекшин вычисляем так - направляем его в сторону взрыва (что то типа, PointTo) и инвертируем. Теперь наш дамми куб стоит там где надо и смотрит туда, куда надо. Прикладываем к ему силу и в каденсере ровняем координаты актера с его координатами. Получаем то, что нужно.
НО! Есть одно но. Надо понять, когда перестать ровнять координаты. Выставлять время либо копать ДЦЕ на предмет свойства типа IsMoving. Если нет (а скорее так и есть), то добавить.
Вариант не проверенный, слишком сегодня на работе устал, так что буду смотреть только завтра (если получиться). Пока что добавил проверку на столкновение снарядов со стенами. Вроде работает...
Кстати. Давайте выкладывать у кого, что есть на эту тему. Но не выкладывать то, что есть уже у всех. Например я буду выкладывать только *.PAS отдельно. Т.к. все остальное можно скачать также отдельно. Просто траффик сэкономлю немного...
---
...Death Is Only The Begining...
← →
Ктото (2004-09-23 01:36) [34]
> DeadMeat © (22.09.04 22:08) [33]
> Держать на том же уровне вложения что и актер такой же дамми
> куб с присобаченным к нему ДЦЕ с такимиже параметрами что
> и у актера.
Слишком вычурно, и добавит лишних тормозов. Тут надо как-то поиграться с векторами, чтобы приложить силу в нужную сторону.
Можно выдернуть код из самой функции и использовать его. Только сама функция малопонятная :// PointTo
//
procedure TGLBaseSceneObject.PointTo(const absolutePosition, upVector : TVector);
var
absDir, absRight, absUp : TVector;
begin
// first compute absolute attitude for pointing
absDir:=VectorSubtract(absolutePosition, Self.AbsolutePosition);
NormalizeVector(absDir);
//: Calculates the cross product between vector 1 and 2
absRight:=VectorCrossProduct(absDir, upVector);
NormalizeVector(absRight);
absUp:=VectorCrossProduct(absRight, absDir);
// convert absolute to local and adjust object
if Parent<>nil then begin
FDirection.AsVector:=Parent.AbsoluteToLocal(absDir);
FUp.AsVector:=Parent.AbsoluteToLocal(absUp);
end else begin
FDirection.AsVector:=absDir;
FUp.AsVector:=absUp;
end;
TransformationChanged
end;
Что такое VectorCrossProduct ? Ты понимаешь, чего там делается, нет ? Я не очень.
В общем, так ничего и не получилось у меня.
-----------
В твоей демке, если загрузить другую карту от Квэйка, Плэйер не пролезает в низкие проходы. Сделай его поменьше ростом.
Как быть с дверьми и разбиваемыми стёклами/решётками на уровнях ? Их можно как-то через GLScene прятат/показывать/сдвигать или что-нибудь в этом роде ? Какие-нибудь свойства типа Visible или чего-нибудь подобного у них есть ?
Ещё в той демке, которую ты на конкурс посылал есть в юзез какой-то модуль OffSetAnim. Откуда он ? А то без него не компилируется.
← →
Ктото (2004-09-23 02:42) [35]Придумал как уничтожать объекты в FreeForm. Правда проверил только для 3ds файлов. Но с остальными наверно что-то аналогичное :
var
M1 : TMeshObject;
begin
// Gate - это фриформ в которую загружен фай gate.3ds содержащий ворота.
M1 := Gate.MeshObjects.FindMeshByName("Stvorka"); // Stvorka - група Stvorka со створкой ворот.
if M1 <> nil then begin
beep;
M1.Destroy; // Удаляем створку.
F1.BuildOctree;
F1.StructureChanged;
end else ShowMessage("Створку не нашли");
end;
Достаточно выстрелить в створку ворот, прикрыть её огнём и дымом взрыва, чтобы невидно было как она исчезает. И можно этим кодом её просто убрать.
← →
DeadMeat © (2004-09-23 19:12) [36]
> Ещё в той демке, которую ты на конкурс посылал есть в юзез
> какой-то модуль OffSetAnim. Откуда он ? А то без него не
> компилируется.
http://www.deadmeat.fatal.ru/GLScene/Addins.rar
Насчет взрывной волны, попробую седня ченить замутить...
---
...Death Is Only The Begining...
← →
Ктото (2004-09-24 03:24) [37]
> DeadMeat © (23.09.04 19:12) [36]
> http://www.deadmeat.fatal.ru/GLScene/Addins.rar
Да. С этим работает. И взрывы намного быстрее получаются, чем c FireFx. И натуральнее как-то.
А кто-такой этот RaveniX, который её написал ? У него сайт какой-то ?
> Насчет взрывной волны, попробую седня ченить замутить...
Попробуй. Взрывная волна особенно полезна была в Сэме. Там когда себе под ноги стреляешь, можно было взлететь на какой нибудь забор.
← →
DeadMeat © (2004-09-24 22:43) [38]Хе-хе... А ларчик та просто открывался...
Я тут начал было напрягать всяких математиков, а все проще оказалось. Причем намного проще. Да и вроде должно работать:
force:=affinevectormake (actor.AbsoluteToLocal(vectormake (......)));
GetOrCreateDCECollision (actor).AddForce(force);
---
...Death Is Only The Begining...
← →
Ктото (2004-09-25 03:00) [39]
> DeadMeat © (24.09.04 22:43) [38]
> force:=affinevectormake (actor.AbsoluteToLocal(vectormake
> (......)));
> GetOrCreateDCECollision (actor).AddForce(force);
А что в скобках ?
← →
Darth (2004-09-25 03:05) [40]//Будет движок - будет и игра.
движок сам по себе это дай Бог 10% от игры
Страницы: 1 2 вся ветка
Форум: "Игры";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.037 c