#c# #unity3d #particle-system
#c# #unity3d #система частиц
Вопрос:
Итак, я хочу создать подобие ауры вокруг игрока, как в warcraft 3 или path of exile и т. Д., Используя систему частиц, И когда персонаж бездействует, он работает отлично. Дело в том, что он не простаивает.
Я попытался изменить положение самой системы частиц с помощью Update(), но это на самом деле не влияет на положение частиц. Что мне нужно, так это установить для каждого из них позицию игрока.
Есть ли способ установить частицы в положение игрока?(или вообще любое положение)
Спасибо
Комментарии:
1. Прикреплена ли частица к проигрывателю? если да, то он должен следовать за игроком. Установлена ли локальная позиция? Когда для SimulationSpace задано значение world space и они привязаны к игроку, частицы остаются в том положении, в котором они были созданы, поэтому, если игрок перемещается, он действует как след. Если задано значение local space, то все частицы следуют за движением игрока.
2. Спасибо за ваш ответ!
Ответ №1:
Чтобы ответить на вашу проблему
Вы можете изменить ParticleSystem.simulationSpace
Определяет, анимируются ли частицы в локальном пространстве родительского объекта (следовательно, перемещаются вместе с родительским объектом), в мировом пространстве или относительно пользовательского объекта (перемещаются с помощью пользовательского объекта по вашему выбору).
Для ParticleSystemSimulationSpace.Local
Имитировать частицы в локальном пространстве
Либо через инспектор основного модуля
или с помощью кода, подобного
GetComponent<ParticleSystem>().main.simulationSpace = ParticleSystemSimulationSpace.Local;
Чтобы ответить на ваш вопрос заголовок
ДА. Вы можете получить частицы через ParticleSystem.GetParticles
, изменить их ParticleSystem.Particle.position
, а затем записать их обратно в систему, используя ParticleSystem.SetParticles
var particles = new ParticleSystem.Particle[theParticleSystem.main.maxParticles];
var currentAmount = theParticleSystem.GetParticles(particles)
// Change only the particles that are alive
for (int i = 0; i < currentAmount; i )
{
particles[i].position = XYZ;
}
// Apply the particle changes to the Particle System
theParticleSystem.SetParticles(particles, currentAmount);
Комментарии:
1. Спасибо! последнее было тем, что я ожидал в качестве ответа. Оба одинаково полезны для меня, но позже второй будет предназначен для лучшего использования каждой отдельной частицы.