![]() |
Вращение оружия вместе с камерой
Создаю некий FPS, как вращать оружие вместе с камерой? И как еще реализовать повреждения от ножа(чтобы повреждения наносились лишь вргам спереди).И вот: как сделать так, чтобы при наведении курсора на NPC можно было сделать что-то(именно как реализовать проверку наведения курсора на NPC)?. А еще: как сделать лазерный прицел и надписи над NPC, которые располагаются ровно на середине?
|
Ответ: Вращение оружия вместе с камерой
Кодом?
зы: попробуй все-таки почитать справку по Entity Movement Entity Control Entity State и CameraPick PickedX PickedY PickedZ PickedNX PickedNY PickedNZ PickedTime PickedEntity PickedSurface PickedTriangle CameraProject ProjectedX ProjectedY ProjectedZ EntityInView Там есть все ответы |
Ответ: Вращение оружия вместе с камерой
Ответ должен был выглядеть так:
Цитата:
|
Ответ: Вращение оружия вместе с камерой
Ну, трудно предположить, что вопрошающий не заметил справки - ведь она специально открывается первой страницей при каждом запуске IDE.
Остается только указать на заголовки, в этой справке, если не цитировать дословно. |
Ответ: Вращение оружия вместе с камерой
reumep
* ентити оружия позиционируешь как надо перед камерой и делаешь чайлдом камеры EntityParent(ЕнтитиОружия, ЕнтитиКамеры) * добавляешь ентити врага на проверку пересечения лучом EntityPickMode(ЕнтитиВрага, 2), 2 - режим проверки по треугольникам модели. Во время удара пускаешь луч из камеры CameraPick(ЕнтитиКамеры, ЦентрЭкранаПоX, ЦентрЭкранаПоY). Если произошло пересечение, функция возвратит ентити. Кроме этого по пересечению проверяешь дистанцию до врага EntityDistance(ЕнтитиКамеры, ЕнтитиВрага), ну и засчитываешь попадание если враг достаточно близко * так-же, CameraPick * так-же CameraPick, в точке пересечения луча ставишь спрайт лазерной точки PositionEntity(ЕнтитиСпрайта, PickedX(), PickedY() и PickedZ()). Кроме этого спрайт точки нужно соориентировать по поверхности на которую он лепится, для этого берешь вектор нормали пикнутой поверхности и ориентируешь по нему спрайт AlignToVector(ЕнтитиСпрайта, -PickedNX(), -PickedNY(), -PickedNZ(), 3). Минусы нужны т.к. вектор нормали нужен в обратную сторону - от поверхности. К оружию можно прицепить два длинных перекрещенных спрайта (лучше сразу при моделлировании сделать, отдельно от оружия чтоб можно было потом найти FindChild(ЕнтитиОружия, "Имя сетки") и скрывать\показывать) На эти спрайты натянуть дымчатую текстуру (шум перлина в фотошопе или что-то подобное), задать полупрозрачность и нужный цвет (в редакторе). В программе двигать и\или вращать эту текстуру PositionTexture\RotateTexture. Должно получиться красиво :) * Можно спроецировать позицию врага на экран CameraProject(ЕнтитиКамеры, ПозицияХ, ПозицияY, ПозицияZ) и по полученым координатам ProjectedX() и ProjectedY() нарисовать что надо. (Но 2D в блице не имеет аппаратной поддержки, очень тормозное, так что можешь заюзать библиотеку FastImage) А лучше делать CameraPick всегда и если пересечение с npc произошло, отобразить EntityShow(СпрайтЕнтити) и спозиционировать спрайт с надписью по координатам npc. Спрайту также нужно выставить порядок отрисовки EntityOrder(ЕнтитиСпрайта, -1), чтоб он рисовался поверх всего. |
Ответ: Вращение оружия вместе с камерой
Цитата:
Ответ прост! Справка то на английском!! :-D |
Ответ: Вращение оружия вместе с камерой
|
Ответ: Вращение оружия вместе с камерой
Цитата:
|
Ответ: Вращение оружия вместе с камерой
Спасибо, конечно, справку я читал. Проблема в том, что я не знаю, что нужно именно вращать мышью, камеру, или модель оружия. Дело в том, что я пользуюсь такой командой
Код:
TurnEntity world\cam,MouseYSpeed(),0,0 |
Ответ: Вращение оружия вместе с камерой
И как сделать адекватный прыжок и адекватный скайбокс?
|
Ответ: Вращение оружия вместе с камерой
Цитата:
Скай.берёшь куб с текстурой,скайлишь его и EntityFx cube,16 |
Ответ: Вращение оружия вместе с камерой
Цитата:
|
Ответ: Вращение оружия вместе с камерой
И вот еще вопрос: как сделать медленное затемнение или обратный затемнению процесс? И как реализовать "поднятие камеры": персонаж встает, тут обратный затемнению процесс. А когда персонаж умер, тут камера как бы падает на пол, экран затемняется. Как это сделать?
|
Ответ: Вращение оружия вместе с камерой
|
Ответ: Вращение оружия вместе с камерой
Код:
Function LoadSkyBox( file$ ) ; Скайбокс Почему так сложно |
Ответ: Вращение оружия вместе с камерой
И еще, как сделать файл с диалогами и функцию его чтения?
|
Ответ: Вращение оружия вместе с камерой
Ничего сложного, просто создаются по очереди 12 треугольников для скайбокса. Модель то уникальная, в список примитивов не входит. Можно ее отдельно самому в три-де-максе замоделить. И отекстурить там же. Даже в виде сферы, если текстуру взять специальную.
А потом вставить в игру и чудовищно увеличить. Что касается диалогов - каждый И это зависит от формата диалогов/квестов. Например - такая мысля: пишешь в файл в отдельных строчках: Цитата:
А в программе режешь считанный файл на строчки (или сразу считываешь построчно) и уже определяешь, кто, когда, почему и куда, создав массив высказываний. |
Ответ: Вращение оружия вместе с камерой
Скайбокс из макса глючит.
А какая функция считывает построчно? |
Ответ: Вращение оружия вместе с камерой
построчно читает ReadLine, возвращает данные символьного типа. Как раз в твоём случае поможет
|
Ответ: Вращение оружия вместе с камерой
Цитата:
|
Ответ: Вращение оружия вместе с камерой
наверное, сделал кубик, наложил текстуру - вставил в игру - видны углы, стыки.
|
Ответ: Вращение оружия вместе с камерой
(не)адекватный прыжок сделать можно так. Вводим переменную скорости прыжка. Константу содержащую максимальную скорость прыжка и константу G. Во время нажатия клавиши прыжка устанавливаем скорость прыжка в максимум. В цикле двигаем сущность этой скоростью вверх.
Таким образом получится плавный прыжок и не нужно городить 2 переменные вроде jumpSpeed и gravity, а использовать отрицательные значения JumpSpeed в качестве гравитации В коде: Код:
jumpMaxSpeed# = 1.2 зы. за блицевский код не бить если в нем недочеты - последний раз писал на нем 5 месяцев назад |
Ответ: Вращение оружия вместе с камерой
Прыжок это же простота. Вводим Y объекта, вводим aY. Надеюсь знаем что это такое?? в цикле, если объект на высоте Y касается ландшафта - то проверяем пробел, если щелкнут - то aY выставляем в (0..N), где N - максимальная сила прыжка. Ежели объект " в воздухе" - то Y+=aY, опять же проверяем на коллизию с уровнем
|
Ответ: Вращение оружия вместе с камерой
Я так сделал, но сфера почему-то не касается ландшафта(программа это не засекает
|
Ответ: Вращение оружия вместе с камерой
пипец.
лучше skyTexture=loadtexture(""); -здесь вписываешь имя текстуры с небом cam=createcamera() skysphere=createsphere(cam) ;- парентишь небо к камере, хотя лучше не надо:-) entitytexture skysphere,skyTexture scaleentity skysphere, 1000,1000,-1000 ;выворачиваешь небо на изнанку(чтобы треугольники, составляющие сферу смотрели вовнутрь сферы) ну как-то так. |
Ответ: Вращение оружия вместе с камерой
Цитата:
|
Ответ: Вращение оружия вместе с камерой
торт конечно, спасибо
|
Ответ: Вращение оружия вместе с камерой
Цитата:
scaleentity skysphere, 1000,1000,-1000 |
Ответ: Вращение оружия вместе с камерой
Цитата:
|
Ответ: Вращение оружия вместе с камерой
|
Ответ: Вращение оружия вместе с камерой
Цитата:
|
Часовой пояс GMT +4, время: 16:13. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot