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; } }
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); } }