예제 #1
0
    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);
    }
예제 #2
0
 public static void SpawnFlyBodyPart(CharacterBodyDisplayer cloneSrc)
 {
     if (instance)
     {
         var GO      = GameObject.Instantiate(instance.flyBodyPartPrefab);
         var flybody = GO.GetComponent <FlyBodyPart>();
         flybody.StartFlyAwart(cloneSrc, instance.config);
     }
 }