Поменял вопрос Партиклы

Novichek

Активный
18 Фев 2020
90
7
Проект
Evo Land
Как заменить партиклы у модели? Если можно по подробнее. Что писать и куда. Спасибо заранее.
 
Последнее редактирование:
20 Дек 2016
892
170
Любой партикл может настраиваться по привязке к модели и контрольными точками. Для начала нужно понять, как работает сам партикл. Открываешь его (Particle Editor) и меняешь позиции контрольных точек (их список в правом верхнем углу), пытаясь понять, на что влияет каждая точка. Также ниже выбери модель какого-нибудь героя для предпросмотра, чтоб понять, какие свойства партикла привязываются конкретно к модели (часто таких свойств нет и партикл настраивается только по контрольным точкам). Часто встречаются вспомогательные контрольные точки, которые никакой настройки не требуют. Иногда партикл вообще не использует контрольные точки, основываясь только на привязанной модели.
Код:
local particle = ParticleManager:CreateParticle( путь_к_партиклу, тип_привязки, сущность )
Создает партикл и возвращает его индекс, по которому производится дальнейшее им управление.
Думаю, тут есть смысл пояснять только про "тип_привязки".
Их несколько, но по сути можно обойтись всего тремя:
Код:
PATTACH_ABSORIGIN_FOLLOW
PATTACH_OVERHEAD_FOLLOW
PATTACH_WORLDORIGIN
Первый тип привяжет партикл к модели сущности. Но этого, как правило, не хватает для настройки партикла.
Второй тип используется для эффектов над героем, например индикатор обезоруживания.
Третий тип подразумевает привязку исключительно к местности. И вместо сущности в таком случае стоит использовать nil.
Код:
ParticleManager:SetParticleControl( индекс_партикла, номер_контрольной_точки, положение )
ParticleManager:SetParticleControlEnt( индекс_партикла, номер_контрольной_точки, сущность, тип_привязки, точка_модели, Vector, bool )
С первым все вроде понятно, просто устанавливает контрольную точку в указанное положение (вектор).
Второй привязывает контрольную точку к какой-то точке на модели сущности. Тип привязки тут может быть либо PATTACH_ABSORIGIN_FOLLOW, если надо просто к позиции сущности привязать, либо PATTACH_POINT_FOLLOW,
если надо привязать к конкретной точке на модели. Список имен точек для каждой модели можно посмотреть просто открыв ее в модел эдиторе. Но для всех юнитов вроде есть attach_hitloc (это где-то в районе груди) и attach_attack1 (атакующая часть тела).
Последние два параметра не так важны и почти никогда не используются, я всегда ставлю unit:GetOrigin() (unit это сущность, та что указывается третьим параметром), а за ним false.
Если партикл не подразумевается, как вечный, его надо обязательно удалить (даже если он сам исчезает через некоторое время). Иначе партиклы будут накапливаться в памяти клиента, если их будет достаточно много, это вызовет лаги на клиенте.
В случае, если партикл сам исчезает через некоторое время, стоит использовать таймер, удаляющий его по прошествии этого времени.
Код:
ParticleManager:DestroyParticle( индекс, мгновенное_удаление )
ParticleManager:ReleaseParticleIndex ( индекс )
DestroyParticle удаляет партикл визуально, и он как раз и отвечает за удаление из памяти. Второй параметр - true/false. Если поставить flase, будет использоваться анимация плавного удаления (если таковая предусмотрена партиклом).
ReleaseParticleIndex освобождает индекс, позволяя занимать его другим партиклам. На самом деле это просто правило хорошего тона, и ничего не изменится, если его вообще не использовать.
Посмотри шаблон lua_ability_example, там довольно много примеров использования партиклов.
 
Последнее редактирование:

Novichek

Активный
18 Фев 2020
90
7
Проект
Evo Land
Я не очень силен в написании кода с нуля. Скажи может есть код для ЗАМЕНЫ партиклов на самом герое на мои собственные(перекрашенные) они уже готовы но надеть на героя у меня не получается.
Да и в шаблоне нет ничего подобного для меня(
 
20 Дек 2016
892
170
Я не очень силен в написании кода с нуля. Скажи может есть код для ЗАМЕНЫ партиклов на самом герое на мои собственные(перекрашенные) они уже готовы но надеть на героя у меня не получается.
Да и в шаблоне нет ничего подобного для меня(
Попробуй сохранить партикл по пути уже "надетого". По-идее должен замениться.

Насколько я знаю, нет способа как-то программно повлиять на партиклы, которые привязаны к героям по-дефолту.
 
Реклама: