碰撞工作,粒子fx没那么多C#

时间:2018-09-08 12:55:52

标签: c# unity3d

我将简短地介绍一下,但是我目前有一个粒子系统,即使我的碰撞有效,它似乎也没有渲染。

我在理解别人的工作时遇到了麻烦,因此我找不到能够理解的解决方案。

这是我的代码:

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)行有什么错? 有人可以说说我的解决方案吗? 谢谢:)

1 个答案:

答案 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.

当然,如果要实例化并销毁许多对象,这不是解决问题的好方法。为此,您应该阅读有关对象池的信息。