У меня есть два объекта, один из которых - рука, а другой - куб.Когда рука касается куба, я получаю точку контакта (Vector3) и порождает эффект частиц Кольца.Однако вращение частицы неправильное, потому что я хочу, чтобы кольцо было параллельным стороне куба, к которой касается рука.
Куб может вращаться, поэтому вычисление вращения кольца становится сложным.Здесь я пытаюсь вычислить вращение на основе нормали точки столкновения, но кольцо по-прежнему не появляется правильно (почти кажется, что появляется случайно).
private void StartParticles(Vector3 pos, Transform parent, Color color, Vector3 normal)
{
ParticleSystem pSystem = Instantiate(ps2, pos, Quaternion.identity, parent);
var main = pSystem.main;
main.startColor = color;
// start rotation
//.eulerAngles;
Vector3 rot = Quaternion.LookRotation(normal).eulerAngles;
main.startRotationX = rot.x;
main.startRotationY = rot.y;
main.startRotationZ = rot.z;
pSystem.Play();
Destroy(pSystem, 3.0f);
}
Это пример, где линия представляетстолкновение, квадрат представляет куб, и я хочу, чтобы кольца были параллельны той стороне куба, которой касается рука.Поскольку куб может вращаться, начальные значения вращения (Эйлер: [x, y, z]) для системы частиц должны быть найдены динамически.