我一直在为墙上的贴花制作一个管理器,该贴花通过法线与面一致,它主要由一个粒子系统组成,该粒子系统使用.emit在碰撞的点和法线向量处发出单个粒子(在本例中为贴花(,该向量可以传递给该方法。它在编辑器中运行得很好,在任何时候从1个粒子到1000个粒子都没有任何问题,但当我试图打开游戏的构建时,血液根本不会出现。我尝试过在检查器中切换着色器、双面着色器和我能想到的所有选项,但由于粒子是通过代码发射的,我实际上没有使用任何模块,所以我只能广泛检查渲染器和主设置。我小时候也试过把这个系统直接放在相机前,但没有成功。我在下面包含了系统设置的屏幕截图,以及在下面的编辑器和代码中工作的贴花图片。
我已经被这件事困扰了一段时间,我真的很高兴听到你们认为能帮助我的东西。提前谢谢!
血液
设置1
设置2
private ParticleSystem ps;
void Start()
{
ps = gameObject.GetComponent<ParticleSystem>();
}
public void SpawnBlood(Vector3 pos, Vector3 normals)
{
float x = normals.x * .01f;
float y = normals.y * .01f;
float z = normals.z * .01f;
// moving position away from wall
var emitParams = new ParticleSystem.EmitParams();
emitParams.position = pos + new Vector3(x, y, z);
emitParams.rotation3D = Quaternion.FromToRotation(Vector3.forward, normals).eulerAngles;
ps.Emit(emitParams, 1);
//Debug.Log(normals);
}
这是由于变量.isStatic仅在编辑器中工作。