示例#1
0
    void RandomLaunchDecoy()
    {
        float angle = UnityEngine.Random.Range(0, 1f);
        float rad   = angle * 2 * Mathf.PI;

        Vector3 direction = Get.GetDirection(rad, how_far);
        Vector3 pos       = this.transform.position + direction;

        my_hitme.setVisuals(MonsterType.SummonDecoy, 0.5f, true);
        GameObject obj;

        switch (type)
        {
        case DistractorType.Decoy:
            pos.z++;
            obj = Peripheral.Instance.zoo.getObject(decoy, false);
            float degrees = angle * 360f;
            obj.transform.localEulerAngles = new Vector3(0, 0, degrees);
            obj.transform.position         = this.transform.position;

            obj.name = obj.name + Peripheral.Instance.IncrementMonsterCount();

            obj.transform.SetParent(transform.parent);
            obj.SetActive(true);
            obj.GetComponent <Rigidbody2D>().velocity = direction * init_velocity * 2f;

            if (max_number > 0)
            {
                decoys.addByID(obj.GetComponent <Decoy>());
            }
            break;

        case DistractorType.Monster:
            Moon.Instance.enemySpawned(my_hitme.my_ai.my_dogtag.wave);

            HitMe hey = Peripheral.Instance.makeMonster(decoy, my_hitme.my_ai.path, pos, 0f, 0f);

            if (one_level)
            {
                foreach (Modifier tech in hey.enemy_tech)
                {
                    if (tech.GetType() == typeof(Distractor))
                    {
                        tech.setActive(false);
                    }
                }
            }
            hey.my_ai.my_dogtag.wave = my_hitme.my_ai.my_dogtag.wave;
            if (max_number > 0)
            {
                decoys.addByID(hey);
            }
            break;

        case DistractorType.Shield:
            decoy_position.z = 1f;

            if (my_shield == null)
            {
                my_shield = Peripheral.Instance.zoo.getObject(decoy, false).GetComponent <Decoy>();
                my_shield.transform.SetParent(transform);
                my_shield.transform.localPosition = decoy_position;
                my_shield.transform.localRotation = Quaternion.identity;
            }

            my_shield.Init(DistractorType.Shield, my_hitme.my_body);
            my_shield.gameObject.SetActive(true);
            break;
        }
    }