我将简短地介绍一下,但是我目前有一个粒子系统,即使我的碰撞有效,它似乎也没有渲染。
我在理解别人的工作时遇到了麻烦,因此我找不到能够理解的解决方案。
这是我的代码:
public float speed;
public Rigidbody rb;
public int health;
private float knockback;
private float knockup;
public ParticleSystem Eparticle; //*** variable for particle system ***
// Use this for initialization
void Start()
{
rb = GetComponent <Rigidbody>();
knockback = 100f;
knockup = 250f;
}
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == "enemy")
{
health = health - 20;
rb.AddRelativeForce(Vector3.back * knockback);
rb.AddRelativeForce(Vector3.up * knockup);
Destroy(col.gameObject);
Instantiate(Eparticle);
}
if (col.gameObject.name == "endgoal")
{
SceneManager.LoadScene("level 1");
}
}
实例化(Eparticle)行有什么错? 有人可以说说我的解决方案吗? 谢谢:)
答案 0 :(得分:0)
您应该在希望粒子预制件出现的位置调用Instantiate
方法。
你可以做这样的事情...
Instantiate(Eparticle,transform.position,transform.rotation);
实际上,您还可以在运行时创建(实例化)GameObject,如下所示...
GameObject obj= Instantiate(Eparticle,transform.position,transfrom.rotation) as GameObject;
这样,您就可以对实例化的游戏对象进行某种“控制”。
例如,您可以在使用对象后通过调用Destroy()
方法来销毁该对象。
例如:
Destroy(obj,2f);//Destroys the created object after 2 seconds.
当然,如果要实例化并销毁许多对象,这不是解决问题的好方法。为此,您应该阅读有关对象池的信息。