public void StartFlyAwart(CharacterBodyDisplayer cloneSrc, FlyBodyPartSpawner.Config config) { // copy sprite var srcSpriteRenderer = cloneSrc.GetComponent <SpriteRenderer>(); gameObject.GetComponent <SpriteRenderer>().sprite = srcSpriteRenderer.sprite; // sync transform transform.localScale = cloneSrc.transform.localScale; transform.position = cloneSrc.transform.position; // add force var rb = GetComponent <Rigidbody2D>(); var randomDirction = Random.insideUnitCircle; randomDirction.y = Mathf.Abs(randomDirction.y); var force = Random.Range(config.minForce, config.maxForce); rb.AddForce(force * randomDirction); var torque = Random.Range(-config.torqueRange, config.torqueRange); rb.AddTorque(torque); // destory Destroy(gameObject, 3f); }
public static void SpawnFlyBodyPart(CharacterBodyDisplayer cloneSrc) { if (instance) { var GO = GameObject.Instantiate(instance.flyBodyPartPrefab); var flybody = GO.GetComponent <FlyBodyPart>(); flybody.StartFlyAwart(cloneSrc, instance.config); } }