Unity3D - 从粒子系统旋转贴花粒子以匹配法线
Unity3D - Rotate Decal Particle from ParticleSystem to Match Normal
我正在尝试使用 ParticleSystem
作为贴花的廉价替代品,但我无法将粒子与所有正常表面对齐。
这是我得到的最接近的轴,除了倒置的 x
轴外,所有轴都是正确的。 (我可以看出这是错误的建筑方向 windows)
if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out RaycastHit hit))
{
Quaternion rot = Quaternion.LookRotation(hit.normal);
ParticleSystem.EmitParams emitParams = new ParticleSystem.EmitParams
{
position = hit.point + 0.01f * hit.normal,
applyShapeToPosition = true,
rotation3D = rot.eulerAngles
};
_particleSystem.Emit(emitParams, 1);
}
粒子系统设置
粒子系统渲染器设置
在过去的 24 小时内,我尝试了多种方法,但现在却迷失了方向,尽管它可能很简单。
抱歉图像尺寸 - 将它们缩小与文本混淆。
编辑:编辑器和项目设置为2020.3.15F2,使用URP。
我终于弄明白了,但由于没有人能够回答,我将添加解决方案,以防它能帮助到其他人。
1: 我在旋转时把 hit.normal
倒过来了。
if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out RaycastHit hit))
{
Quaternion rot = Quaternion.LookRotation(-hit.normal);
ParticleSystem.EmitParams emitParams = new ParticleSystem.EmitParams
{
position = hit.point + 0.01f * hit.normal,
rotation3D = rot.eulerAngles
};
_bloodshotParticles.Emit(emitParams, 1);
}
2:将渲染类型从 Billboard
更改为 Mesh
,并设置了 Quad
。
我正在尝试使用 ParticleSystem
作为贴花的廉价替代品,但我无法将粒子与所有正常表面对齐。
这是我得到的最接近的轴,除了倒置的 x
轴外,所有轴都是正确的。 (我可以看出这是错误的建筑方向 windows)
if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out RaycastHit hit))
{
Quaternion rot = Quaternion.LookRotation(hit.normal);
ParticleSystem.EmitParams emitParams = new ParticleSystem.EmitParams
{
position = hit.point + 0.01f * hit.normal,
applyShapeToPosition = true,
rotation3D = rot.eulerAngles
};
_particleSystem.Emit(emitParams, 1);
}
粒子系统设置
粒子系统渲染器设置
在过去的 24 小时内,我尝试了多种方法,但现在却迷失了方向,尽管它可能很简单。
抱歉图像尺寸 - 将它们缩小与文本混淆。
编辑:编辑器和项目设置为2020.3.15F2,使用URP。
我终于弄明白了,但由于没有人能够回答,我将添加解决方案,以防它能帮助到其他人。
1: 我在旋转时把 hit.normal
倒过来了。
if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out RaycastHit hit))
{
Quaternion rot = Quaternion.LookRotation(-hit.normal);
ParticleSystem.EmitParams emitParams = new ParticleSystem.EmitParams
{
position = hit.point + 0.01f * hit.normal,
rotation3D = rot.eulerAngles
};
_bloodshotParticles.Emit(emitParams, 1);
}
2:将渲染类型从 Billboard
更改为 Mesh
,并设置了 Quad
。