示例#1
0
    void OnCollisionEnter2D(Collision2D collisionInfo)
    {
        if (manager == null)
        {
            manager = gameObject.transform.parent.GetComponent <AsteroidManager>();
        }
        string name = collisionInfo.gameObject.name;
        // Debug.Log("collide with " + name );
        // explode on high impacts
        float impactSpeed = collisionInfo.relativeVelocity.magnitude;

        if (impactSpeed > 2)
        {
            float factor = 0.9f;
            transform.localScale = factor * transform.localScale;
            if (transform.localScale.x < 0.2f)
            {
                manager.RemoveAsteroid(gameObject);
            }
        }

        // spawn dust with size proportional to impactSpeed at every contact point
        for (int i = 0; i < collisionInfo.contactCount; i++)
        {
            Vector2    contact    = collisionInfo.GetContact(i).point;
            GameObject animObject = Instantiate(dust, new Vector3(contact.x, contact.y, 0f), Quaternion.identity);
            animObject.transform.parent = gameObject.transform;
            float scaleFactor = 0.4f;
            animObject.transform.localScale = scaleFactor * impactSpeed * animObject.transform.localScale;
        }
    }