![]() |
ОБЪЯСНЯЮ ПОДРОБНО, ЧТО МНЕ НАДО!
I.Как сделать чтобы вот это работало не на клавеатуре, а намышке? 1.Двигая мышку в ВЕРХ, в НИЗ!!!! Код:
If KeyDown(44) Then MoveEntity cam,0,-0.5,0 Код:
If KeyDown (46) Then MoveEntity cam,0,0,-2 cone и cub на каторых написанны имена ,и эти имена всё время показываются, хоть мой герой убежит за километр,хоть зайду за припятствие(Стену), я буду видеть их имена, А Я ПРОШУ ЧТОБЫ КОГДА robot УБЕГАЛ ЗА ЧТО-НИБУДЬ И cone и cub НЕ БЫЛО ВИДНО, ИХ ИМЕНА(cone и cub) ИЗЧЕЗАЛИ, А КОГДА ИХ ВИДНО ИМЕНА ОПЯТЬ ПОЯВЛЯЛИЬ! И если что лишнее в коде найдёте напешите! Заранее СПАСИБА! :) ;================================================= === Код:
Graphics3D 1024,768,32,1 |
на первый вопрос:
Код:
; устанавливаем графический режим |
второй вопрос:
я с твоим кодом чето толком не разобрался... ты лучше запакуй код в маленький архив со всеми текстурами и моделями и прицепи к сообщению, можно до 5000000 байт прицеплять... я короче свой код написал, демонстрирует работу полностью, ты его потом под себя переделай как тебе надо... Код:
; графический режим и буфер (как всегда) |
ну как?? помогло?? :) :) :rolleyes: :rolleyes:
|
Ну если чесно НУ ОЧЕНЬ СИЛЬНО ПОМОГЛО!!!!!!!!! :glag: :glag: :glag:
:)) :)) :)) Ну если чесно я чёто не понял как я запакованный файл прицеплю к соопщению? :dontknow: |
чето правда косяк какой-то... в других форумах можно прицеплять, а в этом нет.... разберемся... :)
спустя пару секунд уже разобрался.... можно выливать... :) :) |
КАК Я ТО НЕ ЗНАЮ??? :SOS:
ПОДСКАЖИКА НА ЧЁ НАЖАТЬ!!! |
А ща скину погодь! :ok:
|
Вложений: 2
Сдесь находится файлы для :
Код:
robot = LoadAnimMesh( "C:\MODELI\My models\ROBOT\robotic.3ds" ) |
Вложений: 2
Здесь для
Код:
grunt=LoadTexture("C:\IGRA\samples\anim\makbot\Panels.jpg") |
Вложений: 2
И наконец здесь для
Код:
level=LoadMesh ("C:\IGRA\MAPS\TUR.3ds") |
Ну вот я всё выложил, посмотри и чё там надо сделать как я писал изначально, напешии (КАК КОД ИЗМЕНИТЬТ!) Желательно весь код сразу напеши!
|
конструкцию
Код:
movemouse GraphicsWidth()/2,GraphicsHeight()/2 Код:
movemouse GraphicsWidth()*.5,GraphicsHeight()*.5 |
Вложений: 2
изменил код, как и просили...
сам код: Код:
Graphics3D 1024,768,32,1 |
xxxKRIKxxx
Просьба запаковывать ВСЕ выкладываемые файлы в ОДИН архив. |
alcoSHoLiK Ну зачем, просто качай ссылку которую выложил
SubZer0 ТАМ ВСЕ ФАЙЛЫ :super: И кстати БОЛЬШОЕ СПАСИБО SubZer0 :)) !!! |
Да :glag: я наверно вас уже достал, но у меня есть ещё несколько вопросов:
1.Почему когда я отважу дальше камеру ( НА КОЛЁСИКО ) всё становится вытенутым, каким-то кривым???Можно ли от этого избавиться??? 2.Можно ли сделать так, чтобы когда мой герой убегал к примеру на 10 (метров образна говоря) от кубиков их имена(кубиков) изчезали??? 3.И можно ли сделать так, чтобы имена кубиков были написанны на чёрном(тёмном) прозрачном фоне(по размеру с сомо имя)??? :SOS: :SOS: :SOS: |
Цитата:
на счет первого: помоему (насколько я помню) это все называется перспективным просмотром, оно и в нормальном состоянии кубик смотрится не как кубик а как паралелограмм, что и придает трехмерность изображению, что если взять кубик и отнести его маленько влево, то мы увидим правый бок, а если маленько вправо то левый... лично я советую Зумом только приближать чтото, типа в бинокль смотришь, а на счет отдаления, тут лучше позицию самой камеры менять, а иначе все получается как через увеличительное стекло... на счет второго: есть теорема пифагора (покажу на моем старом примере) Код:
graphics3d 800,600,32,2 на счет третьего: чесно сказать никогда не пробовал, но первое что пришло в голову, юзать свой графический шрифт, или просто просчитывать и рисовать сначала квадратик (прямоугольник) фона а потом на нем текст.. ;) ;) ;) |
1. побочные эффекты масштабирования, наверное...
Исправить не знаю как. 2. проверяй расстояние от героя (или камеры) до кубиков. Если оно стало БОЛЬШЕ 10 (или любого другого НУЖНОГО значения), то НЕ выводи имена. То же самое, но по-другому: выводи имена ТОЛЬКО если кубики БЛИЖЕ заданной дистанции. 3. Можно использовать библиотеку для рисования полупрозрачных рисунков + шрифт-картинку... (2д вариант) Или сделать картинки с именами объектов и натянуть их на спрайты, и сделать спрайты полупрозрачными, + масштабировать спрайты в зависимости от длины имени, + сделать их "детьми" для соответствующих кубиков (3д вариант). Второй вариант проще сделать. Или нет? Сам-то я пока не делал такое, но должно работать. 2 должен быть быстрее, потому что 3д... |
Насчет первого SubZer0 правильно сказал, я-то думал там что-то сверхестественное творится.
Рисовать прямоугольник, а сверху текст - самое простое. Но: 1. как сделать прямоугольник полупрозрачным? 2. команда Text медленно выполняется! Надо иметь это ввиду... |
А ха точно самое главное-то забыл написать. :wallbash:
4.Я тут думал как сделать умную камеру, чтоб камера не опускалась ниже уровня и сквозь стены не прохадила(при тотм если учесть что тур не ровный , а где-то есть впадины, а где-то и высоты) ,но так толком и не чё ни сделал.Я возможно знаю, что вы скажете смотри пример CASTLE вроде он так назывался, но я вас предупреждаю я там ни чё ни понел:wallbash: :wallbash: :wallbash: . :SOS: :SOS: 5.И практически таже проблема с героем(как он прыгает от уровня -7 до уровня 3 по высоте,так и прыгает) как сделадь чтоб он прыгал на +7 по высоте несмотря на то где он находится(В НИЗУ ИЛИ В ВЕРХУ)!!! :wallbash: :SOS: :SOS: :SOS: |
Чтобы камера, герой и прочие объекты не проходили через другие объекты, нужно назначить для них коллизии.
Если с героем все относительно просто, то с камерой посложнее: может получиться так, что камера "зацепится" за какое-то препятствие, и игрок отдалится от нее (или приблизится). Поэтому необходимо следить за расстоянием от героя до камеры, и если оно не равно какому-то эталонному, то сделать его таковым. Неровности: высоту камеры над уровнем земли проверяешь, используя команду LinePick. С ее помощью ты получишь координату Y (x,z) "над" камерой, т.е. высоту холма (впадины). Затем проверяешь расстояние от найденной высоты до камеры, если больше эталонного, то уменьшаешь (двигаешь камеру вниз), меньше - увеличиваешь. Прыгать надо не от координаты, а от поверхности земли, тогда прыжок будет одинаковый по высоте. ПС: извиняюсь, что ни строчки кода не даю. Суть я передал как смог, кто хочет кодом помочь - помогите (сделать все это довольно просто, но новички (без обид) могут и не въехать). |
Наверно ща напишу бред :dontknow: но все таки :glag: (просто хотелось высказатьза за пару дней)
Ето чтобы текс уберался :rolleyes: :o'' if entitydistance(pl,NPC) > 10 then ClearAllActions :o'' или что-то в етом духе :)) |
так ты что, два дня молчал что ли? :)
Типа псевдокода, но ты выбрал первый вариант. Я же НАСТОЯТЕЛЬНО советую делать по второму, т.е. именно если МЕНЬШЕ if (entitydistance(hero,NPC)<MAX_RANGE) ;берем проекцию объекта на камеру ;выводим текст в полученных координатах ;это 2д ;для 3д ;showentity sprite_name_npc или ;entityvisible sprite_name_npc ;масштабируем спрайт в зависимости от расстояния до камеры (чтобы он ;не получился слишком маленьким либо слишком большим) endif |
Цитата:
Жека! или КТО-НИБУДЬ! Напешите элементарный примерчик ПОЖАЙЛУСТА,а то я примерно знаю чё делать, а чё точно не имею понятия, ну на примере лучше я въезжаю,а не на словах! |
Вложений: 1
Вобщем, я написал пример, часть взял из того, что выложил SubZer0.
Придется тебе его переделать под свои нужды, у меня времени нет, проще и быстрее было сделать то, что я сделал... Комментарии я проставил. Не очень подробные, но все же. Если что не понятно, спрашивай. Фичи: -робот не проходит сквозь большой кубик -робот не проходит сквозь землю -камера не проходит сквозь землю -камера не проходит через большой кубик -имена кубиков пишутся, если расстояние от них до робота меньше 100 -имена кубиков пишутся, если есть прямая видимость между ними и роботом (добавил преграду для видимости - большой куб, земля как преграда была до меня) |
Цитата:
|
SubZer0, все ты правильно написал, осталось только запихнуть теорему в функцию и назвать ее EntityDistance ;)
Но твой вариант более общий, так как позволяет считать в любой из плоскостей, в 3д или по отдельной оси. Ведь бывают случаи, когда надо посчитать расстояние только в плоскости XOZ, для этого из твоего кода убираем yd и все! А "ентитидистанс" не упростить.... |
хочу заметить что entitydistance тормозит иногда :o''
|
Однако ж практика показывает, что "встроенный" ЁнтитиДистанс работает на порядок (!) быстрее, чем расчет из кода через теорему Пифагора. Так что при необходимости расчитать дистанцию между двумя обьектами по проекциям на плоскости, логично использовать дополнительный пивот, размещаемый по законам проекции одного обьекта на одной плоскости со вторым...
|
Жека! ну всё практически, как я и хотел(ну чучуть надо настроить)!!! :bravo:
А на счёт SubZer0 (zoom) я тоже прикол в игре придумал!!! :bravo: НУ ВООБЩЕМ НАЧАЛО ИГРЫ УЖЕ ЕСТЬ! :)) :super: |
ДА, я так и знал , что это не последний вопрос по этому коду:
Как в коде ЖЕКИ сделать вместо Код:
If KeyDown(44) Then TranslateEntity cam,0,-0.5,0 Не знаю раньше получалось, а ща пустить под мышку не могу :SOS: |
НУ чё никто не знает?
|
ты про это?
Код:
angy#=MouseYSpeed()*0.5 |
Там про это говорят, что заданно много параметров (Too many parameters вроде так) и ещё когда мышкой из стороны в сторону двигаешь,КАМЕРА удаляется от оъекта :( .
Цитата:
|
Ну кто - что предложит???
|
Цитата:
|
сильно много параметров потому, что там запятые стоят... (эт я уже в броузере поставил... косяк)
Код:
angy#=MouseYSpeed()*0.5 |
Блин, зырь внимательнее:
Цитата:
Напрягай мозги !(это не оскорбление). Ко всему готовому быстро привыкаешь, а пользы от этого потом станет не ноль, а еще меньше! |
Ответ появился пока я писал...
|
Да прикинь и я забыл про это и тоже писал запятыми и до того как мне написали этот пример неправельный :lol: .Ну не чё буду внимательней! :))
|
Стоп! :blink: А чё сделать то чтоб камера вверх не двигалась при движении мышки???(Вверх ну примерно с каждым движением на 0.3)???
|
xxxKRIKxxx! Я предлагаю тебе самому во всем разобраться.
Т.е. ты пробуешь сделать и так и сяк, если не выходит то_что_хочешь, пиши в форум, а то некрасиво получается, когда каждую "мелочь" спрашиваешь, до решения которой и сам мог дойти... |
Не понимаю почему камера постепенно двигается вверх при этом коде :'((
Хотел c начала это заменять и TurnEntity и RotateEntity но т.к. в моём коде есть PointEntity это не пройдёт.Да довольно тупой вопрос покажется для кого-то,но я новичок в Blitz3D. Чем можно заменить или как исправить этот код чтоб ВСЁТАКИ камера не двигалась вверх(не забывайти что есть PointEntity камеры на робота)???Если вы не чё ни понимаете,то возьмити и на примере сами попробуйте вставить этот код и резко поводить мышкой,вы увидите как камера постепенно двигается вверх. :SOS: Код:
angy#=MouseYSpeed()*0.5 |
Цитата:
У SubZero было moveentity cam,0,0,angz - то есть он двигал по Z. Но так как камера стоит не горизонтально из-зи ПоинтЕнтити, то она вверх-вних двигалась. Чтобы проще было работать с камерой, сделай для нее свою систему координат - Pivot camPiv = createpivot() cam = createcamera(camPiv) Теперь у тебя камера будет двигаться относительно camPiv. Вместо передвижения камеры теперь передвигай camPiv, а саму камеру только поворачивай: d_yaw# = entityyaw(camPiv,player) ;точно не помню название команды, вобщем она должна возвращать угол между игроком и камерой по оси Y turnentity camPiv,0,d_yaw#,0 pointentity cam,player Так ты повернешь canPiv мордой к игроку ТОЛЬКО по оси Y, это надо чтобы потом двигать его по Z (вобщем, в ГОРИЗОНТАЛЬНОЙ плоскости), а камера будет смотреть на игрока как раньше (должна ;) ) Если теперь тебе надо двигать камеру, то двигай camPiv angy#=MouseYSpeed()*0.5 1. moveEntity camPiv, 0, angy, 0 - вверх / вниз 2. moveEntity camPiv, 0, 0, angy - ближе / дальше по отношению к игроку Раз тебе не надо вверх, то используй 2. |
ПС: если надо двигать ТОЛЬКО по Y, то можно и без Пивота, но вместо moveentity писать translateentity
|
Код:
; Load3DSound Example Проблема в том, что я вставляю мелодию OPERA.wav она повторяестя, вставлю же другую мелодию она 1 раз проигрывается и всё :dontknow: Чё сделать, чтобы и другие мелодии опять повторялись? :SOS: |
Написал не очень понятно...
1. Можно поставить "метку зацикливания" в музыкальном редакторе, я не знаю как... 2. Повторное нажатие левой кнопки мыши ;) 3. Если хочешь 1 раз нажать, и чтобы звук повторялся после этого постоянно, то после строчки sound=Load3DSound("C:\Games\CS1.6 ver 1.1.2.4\cstrike\sound\ambience\opera.wav") добавь такую строку: LoopSound sound Подробнее читай тут (4 пост вроде):Перевод хелпа - Sound/Music |
Ага ясненько посмотрю!
Жека вот ты ещё говорил на TransleteEntity заменить, я пробовал, камера двигается как и надо, но при перемещении вверх и вниз сильно дрыгается (начинает дрыгаться) мож к TransleteEntity ещё чё надо добавить чтоб не дрыгалась камера? |
Может дерганье из-за того, что слишком быстро ты ее двигаешь? Попробуй взять значение поменьше для Translate'a...
|
Не, хоть я и беру значение меньше камера всеравно дёргается, но меньше и чаще. А если сделать ещё меньше то вооще мышкой считай не вертит :bad: :wallbash:
|
B) НУ, КТО - ЧТО ПОСОВЕТУЕТ ???
|
прицепи плиз последнюю версию кода... :)
может там гденить так, что условия друг против друга работают :) |
Вложений: 2
Вто последняя версия кода!
|
Блин я чувствительность мышки на компе уменьшил и стало гораздо лучше,но самая маласть ещё осталась (если скорость по у ставить 0.5)
|
Да кстати, Blitz поддерживает звук более, чем из 2 колонок?
|
Цитата:
|
Цитата:
на первый взгляд вроде ничего глючить недолжно. |
Ну если не знаете или не можете ответить на этот вопрос, ответте на этот
1.Что надо сделать в этом примере чтобы камера смотрела не на сам POINT ENTITY , а чуть выше его ( на 4 выше ) ? 2.В этом примере мой герой бежит назад (просто так настроина камера, MoveEntity,0,0,-1 и вам кажется, что он бежит вперёд),ЧТО надо сделать, чтобы герой бежал вперёд (ну то, что надо изменить moveentity на 0,0,1 и камеру поставить в противоположном направлении,можете не писать) не задом а передом??? |
Цитата:
А текстуры и всё-всё что там есть, это я до этого уже выкладывал точнее на какой странице чуть позже скажу. |
Все ресурсы качайте с самой первой страницы этой темы! :glag:
|
хз, у меня камера нормально крутится, вроде без сбоев...
чтоб сделать чтоб камера смотрела не на робота, нужно создать объект на который бы она смотрела, а еще лучше пивот (см код) Код:
;tipy dlya kolliziy |
За всё написанное СПАСИБО, но EntityMesh тоже не помогло. Значит в редакторе 3Д переделовать прейдётся?
|
Цитата:
|
Часовой пояс GMT +4, время: 10:38. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot