Всем привет! Давно мучал вопрос, как в Xash или HL заскриптовать анимацию и камеру как это любят делать сейчас в таких играх как COD, Crysis и т.д... Сейчас постараюсь объяснить: Допустим главный герой идёт по коридору. На экране видна модель "v_rpg.mdl" (именно анимация от 1го лица) с анимацией idle. Потом он подходит к такому месту, где допустим какая-то энтитя или ещё что-то самопроизвольно активирует анимацию fire у этой модели (т.е игрок как-бы ничего не нажимая выстреливает). Или любую другую анимацию, которая вписана например у энтити(или ещё чего-то) в параметре target.
Теперь насчёт камеры. Допустим тот самый игрок стоит на обрыве. И он решил с него прыгнуть. Нажал на прыжок и в этот момент камера сама повернулась вправо, потом влево, далее вниз и только потом он спрыгнул.
Возможно ли это реализовать без лишнего геморроя (я имею ввиду лезть в соурсы движка и кодить, кодить, кодить до мозолей на пальцах...) А обойтись например редактированием файлов qc моделей, прописыванием в определённых файлах движка команд и мест в которых будет происходить активация или чем-то похожим?
Если что-то не понятно объяснил, то постараюсь разъяснить подробнее
Заранее спасибо за ответ
Ну вообще движки такого типа не предусматривают плотную работу с камерой, в те времена считалось некомильфо всё скриптовать.
Камера может ездить по патч_трекам и поворачиваться туда, где находится энтить, указанная в поле target (обычно это info_target), но может быть и func_train. В ксаше возможности камеры расширяются наличием парент-системы, а так же возможностью наблюдения от "третьего лица", т.е. от монстров, учоных, хедкрабов. Если этого недостаточно - пиши свою систему. Проигрывать произвольную анимацию вью-модели нельзя, но в целом это не так уж и нужно - достаточно просто накодить энтитю, которая нажмёт игроку на "курок".
Но я тебя хочу предупредить про самое главное - когда ты спрашиваешь "а как сделать что-то как где-то", ты уже убиваешь половину своей задумки, поскольку копия всегда хуже оригинала. Если ты просто накопируешь эффектов из разных игр, толку не будет.
Дядя Миша, я не собираюсь копипастить что-то у других, просто я не знал как более понятно объяснить , поэтому взял популярные игры как пример.
Насчёт камеры, мне этого будет вполне достаточно, во всяком случае пока-что. Главное чтобы камера могла от первого лица следить за info_target...
____
Вот мне тогда интересно, это выходит что анимация "fidget2" у тойже v_rpg.mdl проигрывается спустя какое-то время, или после какого-то определённого действия(т.е например когда игрок первый раз подобрал эту РПГ с полу)?
Про обрыв - можно, в принципе, сделать модель с анимацией головы ( кость ), сделать аттачмент к кости, а потом узнавть координаты аттачмента во view.cpp. Я, помню, когда-то такое делал. Исходников, правда, не сохранилось.
Jaguar101 писал: Вот мне тогда интересно, это выходит что анимация "fidget2" у тойже v_rpg.mdl проигрывается спустя какое-то время, или после какого-то определённого действия(т.е например когда игрок первый раз подобрал эту РПГ с полу)?
А в XDM - не random а когда игроку надоедает.
Цитата:
Jaguar101 писал: т.е если я верно понял,можно замутить энтитю эмулирующую только действие игрока(стрельбу,релоад)?
он, наверное, говорил про выполнение любой клиентской команды (как из консоли), только в таком случае надо убедиться, что игрок смотрит куда нужно, у него есть патроны, выбрано нужное оружие.... Упс, это код...
Также есть возможность сделать так, чтобы при определённом кадре анимации был активирован объект на карте с нужным именем.
В QC файл модели к анимации добавляем событие, прописываем
{ event 1003 12 "object" }
Где 12, это кадр анимации, когда активировать выбранную энтити, а object - имя энтити которую нужно активировать.
Jaguar101 Заставить игрока шмальнуть из РПГ можно при помощи энтить trigger_command при условии что у тебя кроме РПГ ничего нет. Если есть другое оружие - нужно ещё предусмотреть переключение на РПГ, а это алиасы.
По поводу прыжка - как 2 пальца об асфальт скриптуется в Хаммере. Если сделаешь заготовку-пример. Запилю.