Может глупые вопросы, но после работы в 3ds привык при создании локации, чтобы было без лишних полигонов и чётко по размеру. Хотя понимаю, направления программ отличаются.
1) Возможна ли работа с метрическими величинами(сантиметрами и миллиметрами)?
2) Есть ли возможность задавать фиксированный размер объектов? Например, что если потребуется создать комнату 400см x 300см x 300см. Конечно, я могу примерно сам подогнать, задав величину grid'а, и растягивать по сетке, но мне кажется по любому есть более лучшее решение, в котором, примерно как в 3ds, заполнив поля параметров объекта.
3) Есть ли возможность изменить местоположение объекта, задав координаты? Наподобие панели в 3ds XYZ.
semerjon смотря в чём ты работаешь. Если речь про хаммер и джек, то:
1). Нет. Умножай сам размеры на 2.5, получишь сантиметры. (1 юнит ~ 1 дюйм).
2). Можно использовать заранее заготовленные куски карты (с известными тебе размерами) и масштабировать их с помощью инструмента "Трансформировать".
3). Можно сдвинуть объект относительно текущего положения на определённое кол-во юнитов, используя инструмент, как в п.2.
И вообще, постарайся выкинуть из головы мысли о метрической системе и точном соответствии размеров и масштабов игровых объектов объектам ИРЛ. ИРЛ размеры и пропорции выглядят в игре очень маленькими. Помещения получаются тесными, а проходы узкими. Делай карты на глаз, сверяясь с оригиналом, тогда будет выглядеть хорошо.
Ku2zoff писал: semerjon тогда будет выглядеть хорошо.
пока в этих объектах не появятся npc) Вот на скрине отчётливо видно, что на стульях сидят будто бы 12-летние дети. С эти можно только свыкнуться и забить
Yo Den а мне норм. Есть конечно диспропорция, но сильно заметна она лишь на статических картинках. Играя в Паранойю, я вообще не обращал на это внимания, даже в глаза не бросалось.
Возможно, немного туго объясню вопрос.
Допустим, задача создать локацию в виде куба. Для этого мы 6 раз создаем браш и внутри локации нашей локации будет сущность игрока. По сути, для нашего персонажа требуется 6 полигонов от всех этих 6 брашей. Вопрос. Что происходит с полигонами брашей, которые не попадают в обзор игрока? А ведь, даже если с помощью noclip выйти за пределы куба, то мы не будем видеть эти стороны прямоугольников, а будем видеть нашу локацию(то что внутри куба).
И ещё, чтобы бы если был инструмент создания плоскости (plane из 3ds), а не box'ы "вытягивать". Я понимаю, что если создать браш размера нашей локации, и внутрь браша вставить сущность игрока, то, точно не помню, игрок при спавне в нём застрянет и вроде звуки воды ещё будут. Но я к тому, что если создавать 6 брашей, то будут лишние полигоны, которые игрок не сможет видеть и займут лишнюю память.
Думаю вы поняли, что я хотел сказать. Хотя личные догадки тоже есть, возможно компилятор предусматривает, что не будет попадать в обзор и отсекает лишнее.
Появилась идея сделать мирную зону. Заметил что func_water имеет на несколько видов оружия действие как запрет выстрела в воде (например mp5).
void CMP5::PrimaryAttack()
{
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)
Следовательно подскажите в какую сторону копать либо делать новую копию func_water и вырезать от туда все лишнее что бы было как не в водной среде. Либо копать в сторону функции waterlevel == 3. Выслушаю все мнения по этому поводу.
Eternal12, думаю можно попробовать сделать что-то наподобие func_buyzone из кс, или хотя бы зоны для спасения заложников(func_ не знаю название). только не знаю, как бы дополнить pev каким-нибудь int peacezone. типо waterlevel - переменная, хранящая значение находимся ли мы в воде, а peacezone - находимся ли мы в мирной зоне.
Если всё это сделать, тогда думаю можно просто дополнить функцию ItemPostFrame класса CBasePlayerWeapon проверкой значения peacezone.
semerjon писал: Eternal12, думаю можно попробовать сделать что-то наподобие func_buyzone из кс, или хотя бы зоны для спасения заложников(func_ не знаю название). только не знаю, как бы дополнить pev каким-нибудь int peacezone. типо waterlevel - переменная, хранящая значение находимся ли мы в воде, а peacezone - находимся ли мы в мирной зоне.
Если всё это сделать, тогда думаю можно просто дополнить функцию ItemPostFrame класса CBasePlayerWeapon проверкой значения peacezone.
Eternal12
Похоже, нужно просто дополнить сам класс CBasePlayer свойством bool m_bInJail(файл Player.h). И по поводу PlayerPrethink, может в других версиях как-то по другому, но у меня PreThink. Чтобы лучше ориентироваться пользуйся окном классов. Сразу открываешь hldll - CBasePlayer - PreThink.
semerjon писал: Eternal12
Похоже, нужно просто дополнить сам класс CBasePlayer свойством bool m_bInJail(файл Player.h). И по поводу PlayerPrethink, может в других версиях как-то по другому, но у меня PreThink. Чтобы лучше ориентироваться пользуйся окном классов. Сразу открываешь hldll - CBasePlayer - PreThink.
Угу спасибо теперь разобрался, перепутал исходники когда то их испортил и не удалил и там в нём искал того что удалено было.
Задача такая: есть функ_валл, который должен быть несолиден только для игрока. То есть игнорить его должна только трасса в pm_shared. Все прочие должны в него упираться, чтобы оставались декали, взрывались гранаты, не могли пройти монстры. Как это сделать? Копал в сторону PM_PlayerTrace, там последним аргументом принимается int, который видимо индекс игнорируемой энтити. Но это не индекс. Что это, и в правильном ли направлении я вообще думаю?
Добавлено 19-09-2017 в 18:32:
Думал не туда UTIL_SetGroupTrace помогает решить задачу.