Beispiel #1
0
    void OnLaunchFragments(MissileController.FragmentsArg arg)
    {
        if (arg.cause != null)
        {
            return;
        }
        Rigidbody2D       r = GetComponent <Rigidbody2D>();
        Vector2           p = r.velocity * r.mass, p2 = p;
        Vector3           shift = p.normalized * Shift;
        MissileController mc    = SplitsPrefab.PrefabInstantiate(transform.position + shift, Damage, p);

        mc.transform.rotation = transform.rotation;
        for (int i = 0; i < Count; i++)
        {
            p     = p.Rotate(Angle);
            p2    = p2.Rotate(-Angle);
            shift = p.normalized * Shift;
            mc    = SplitsPrefab.PrefabInstantiate(transform.position + shift, Damage, p);
            mc.transform.rotation = transform.rotation;

            shift = p2.normalized * Shift;
            mc    = SplitsPrefab.PrefabInstantiate(transform.position + shift, Damage, p2);
            mc.transform.rotation = transform.rotation;
        }
    }
Beispiel #2
0
    void OnLaunchFragments(MissileController.FragmentsArg arg)
    {
        if (arg.cause == null)
        {
            return;
        }
        Vector2 dir = Random.insideUnitCircle.normalized;

        for (int i = 0; i < Fragments; i++)
        {
            MissileController mc = ShrapnelPrefab.PrefabInstantiate(
                transform.position,
                Damage,
                dir * Impulse);

            mc.transform.position += (Vector3)dir * SpawnShift;
            if (arg.cause != null)
            {
                Physics2D.IgnoreCollision(mc.GetComponent <Collider2D>(), arg.cause.GetComponent <Collider2D>());
            }

            dir = dir.Rotate(360 / Fragments);
        }
    }