Смена локаций
Допустим у меня есть 2 функции. Каждая создаёт свою камеру свой свет свою плоскость. Тобиш 2 функции это 1 и 2 локации. Есть у меня например переменная location изменяя которую я заставляю работать функции. например если переменная равна одному работает первая функция, если двум то работает вторая.
А вот суть вопроса. Например заработала у меня эта первая функция создались в ней камера свет плоскоать, и я вдруг меняю переменную функция перестаёт работать включается другая функция где грузятся новые камера свет плоскость. Вопрос в том если я перестал выполнять первую функцию исчезнут ли объяекты которые она создавала? тобиш камера свет плоскость первой локации. Или мне их придётся при смене переменной удалять командой фри ентити? |
Re: Смена локаций
прийдется удалять ручками
у тебя же в памяти хранятся только ссылки на обьекты (указатели) поетому даже если ты их затрешь то из памяти они никуда не денутся |
Re: Смена локаций
Посмотри так пойдёт? Вроди всё работает как надо на Q грузится первая локация, на W вторая локация. Ток чёто медленно грузится почемуто.
Код:
;--------------------------------------------------------------------------------------- WORLD: |
Re: Смена локаций
oiiii
zdelay prosto cthobi bilo : Код:
function CreateLocation1() ps. ya v fluxbox v linux'e , tut poka russkogo netu :) |
Re: Смена локаций
Чёт я смысла непонял. ты имееш ввиду так? :
Код:
function CreateLocation1() |
Re: Смена локаций
Кажется не совсем пойдет...
Походу какмера у тебя оздается в цикле и есть возможность создавать одну и ту же много раз. Сколько раз нажмешь KeyHit(16) столько камер будет... Эти инициализации имхо лучше делать перед циклом образно говоря типа так: InitGraphicMode InitGlobalVar&Constant .start Select level Case 1 InitCamera1 CreateWorld1 Case 2 InitCamera2 CreateWorld1 ... End Select цикл While Not KeyDown(1) if KeyHit(16) level=level+1;на следующий левел free_all_world; там прописать убой всех энтити, света и камеры Goto start End If ... |
Re: Смена локаций
Чёто я загрузив мир вообще долговато не могу закрыть окно программы.
Моя система с 3 поста случаем не плодит триллион миров??? Вроди ток по 1 каждого элемента загрузиться должно. |
Re: Смена локаций
Цитата:
Я пока примерную систему загрузки уровней делаю, а дальше будет грузиться новая локация при коллизии юзера с концом локации, а старая сразуже удаляться. Там я уже не смогу второй раз проколлизиться ибо буду уже во второй локации. |
Re: Смена локаций
:) так не ставь создание мира в цикл.
|
Re: Смена локаций
Я не понял что значит не ставить создание мира в цикл.
Ты мне скопируй с моего кода то что я не должен ставить и скажи куда недолжен и почему? |
Re: Смена локаций
Функции Location1, Location2 лучше вызывать ДО While Not KeyDown(1) (тоесть цикла).
Можно еще посоветовать юзать стандартную функцию FreeWorld , почитай в хэлпе она облегчит удаление. --- Незнаю поможет ли, там есть смена локации (какраз с Goto), но пример не самый простой. http://damp.ucoz.ru/GAME.rar - 500Кб |
Re: Смена локаций
Если я
Код:
If KeyHit(16) Then Location=1 то у меня нихрена работать не будет А вот шо есть Goto понятия не имею ) Свою же систему загрузки делаю. |
Re: Смена локаций
эк, Вы, батенька жжоте.
Код:
If Location=<1>1 Then .... а всего лиеш это if location <=(2>2) или if location<=(false) оно же if location<=(0) собсно с еденицетй таже проблема. ЗЫ. Чо то ненравится мне твоя идея, Crystal, таким макаром грузить локации. Имхо надо выделить общую часть (камера, свет, скайбокс, оружие, враги, деревья) / которые ниезменны от уровня к уровню и нетрогать при загрузке локации их вообще. а в ф-ию передавать параметр, например LoadLocation(2) а в самой функции уже парсить это select - ом и загружать локацию в зависимости от значения. |
Re: Смена локаций
Цитата:
Да хрен его знает я решил что смогу обозначить этим то что если переменная меньше или больше единици то удаляем мир нахрен. Цитата:
Я вообще хочу в новой локации и юзера по новой создать, а всякое барахло что юзер с собой таскает всё равно в переменных храниться будет. |
Re: Смена локаций
значит так if variable<>1 надо
|
Re: Смена локаций
Незнаю правильно ли сделал
Код:
If Location<>1 Then пишет что нету такого обьекта Camera1 которая была гружена функцией которая в свою очередь работает при переменной Location равной одному. В итоге я думаю что етот чёртов If Location<>1 Then удалил объекты и сразуже хочет их сново удалить, а раз удалять уже нечего то ругается насчёт этого.... Мде... С этой загрузкой локаций придётся покапаться дольше чем я думал... |
Re: Смена локаций
Фуф понял чё тормозило, и вправду миры клонировало.
Сделал пока тупую простенькую системку а потом переделаю ) Код:
Global Camera1 Тут вроди пока кажется системка не очень. Но все If KeyHit будут заменены на коллизию. В зависимости в какой локации юзер и с переходом в какую локацию коллизится то, и будет удаляться данная локация и грузиться нужная. Ток тут получится что все мобы заново создадутся и все валяющиеся предметы, но если их хранить в переменных отдельно в глобале то если убиты или подняты не загрузятся. Вроди норм система локаций получается. Системка то простая и работать будет замечательно. Но эт всё моя теория. Мож я и не прав. |
Re: Смена локаций
у тебя в цикле переменная была равна 1 и по этому всё время когда она была равна 1 создавался новай мир (и это каждый цикл) !!
|
Re: Смена локаций
Да конечно я это понял. Функция создания работала непрерывно. А щас я ток 1 раз вызываю.
|
Re: Смена локаций
Щас делаю пробную версию смены локаций.
Подскажите как скай бокс удалить? FreeEntity не удаляет нифига! |
Re: Смена локаций
если он один для обоих локаций, то ненадо его удалять !!
|
Re: Смена локаций
Он для одной локации, в новой новый скай бокс.
|
Re: Смена локаций
Так как удалить чёртов бокс? ФриЕнтити его не берёт!!!
Щас доделаю тестовую версию смены локаций по моей системе и выложу сюда ехе на скачивание. Там будет виден баг из-за не возможности мною удалить скай бокс от перемещения с локаций туда сюда боксы перепутываются нахрен. |
Re: Смена локаций
Наверно ты его составлял из трианглов типа m=CreateMesh итд
Если да то удалять надо FreeEntity m Goto start - это переход на строку .start , посути как начать прогу заново (так выходить из цикла конечно не красиво, но если локаций меньше... 10000-100000 штук :) то стак оверфлоу не выскочит) И всетаки не создавай мир в цикле, чтоб небыло даж намека на ошибку. |
Re: Смена локаций
Гы во я гоню
всё удаляется просто в глобал забыл прописать боксы ) ещё 5 мин и демка закончена ) |
Re: Смена локаций
не удаляй !!
перемести его и поменяй брашы т.е. текстуры которые на него натянуты !! и будет тебе новый скай-бокс !! |
Re: Смена локаций
Хе. А если размеры второго бокса должны быть меньше первого.
Уж проще удалить всё к чёртовой матери и создать новое. Так через 40% загрузки выложу свою демку |
Re: Смена локаций
scaleentity старыйбокс, 0.1,0.1,0.1 и получиш размеры нового !! :)
не удаляй, поскольку скайбокс это не цельный entity, ты его командой freeentity не удалиш, а удалять каждий триангл это хуже чем поменять размер бокса !! |
Re: Смена локаций
Короче вот ссылка на скачивание:
http://ifolder.ru/3478416 3 с чемто метра (медиа весомая) Вопщем запустите файл вылезет чёрный экран с разрешением 1024-768 Почему чёрный? Дык ведь ни мира ни вас нет! Его надо сотварить! Тварим нажав кнопку Q (ток я вас прошу ради бога не жмите её второй раз. иначе вылезет параллельный мир с вашим клоном) Далее видем корабль и планету. Летим к планете. Ах да как лететь? Тыкая клавишу W увеличиваем скорость тыкая S понижаем. A D крен корабля. Стрелки вниз и вверх это лететь вверх и вниз. Стрелки влево вправо лететь влево вправо. Ещё рулить мышкой можно но тут кому как нравится. Вопщем летим на планету и залетаем в неё. Если надо вернуться в космос летим в небо. Вопщем помоему получилась неплохая система смены локаций по моему методу. Тестируйте ) |
Re: Смена локаций
Цитата:
|
Re: Смена локаций
Цитата:
|
Дак юзаю уж давно )
Яж выше говорил, просто забыл в глобал прописать боксы. А так как тут у меня боксы в функциях а функции вызываются переменными без глобала никак. Ну чё мож найдётся тестер? Хочу узнать насколько у вас быстро локация меняется, и не нашли ли вы багов? |
Re: Смена локаций
вы смеетесь господа?
зачем вообще менять размер скайбокса? разве что то изменится? кто сказал что freeentity не удалит весь скайбокс? |
Re: Смена локаций
Фри ентити удаляется свободно )
Мне вот проще удалить бокс, а в новой локации создать новый с новыми текстурами. А в некоторых локациях он вообще может быть не нужен. А вот чем больше локация, тем больше должен быть бокс (чтобы не видно было квадратность) |
Часовой пояс GMT +4, время: 16:21. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot