Ejemplo n.º 1
0
    public void fireTorp(Vector3 position, Quaternion rotation, int layer, int damage)
    {
        if (layer == 10)
        {
            torp = PoolManager.Instance.fedRequestTorp();
        }
        else if (layer == 11)
        {
            torp = PoolManager.Instance.kliRequestTorp();
        }
        else if (layer == 12)
        {
            torp = PoolManager.Instance.oriRequestTorp();
        }
        else if (layer == 13)
        {
            torp = PoolManager.Instance.romRequestTorp();
        }

        TorpedoBehavior torpBehavior = torp.GetComponent <TorpedoBehavior>();

        torpBehavior.damage           = damage;
        torpBehavior.playerController = this;
        torp.transform.position       = position;
        torp.transform.rotation       = rotation;
        torp.SetActive(true);
        torps.Add(torpBehavior);
    }
Ejemplo n.º 2
0
 private void OnTriggerEnter2D(Collider2D other)
 {
     Debug.Log("HullController_TriggerEnter: " + other.gameObject.name);
     if (!shieldCollider.gameObject.activeInHierarchy)
     {
         if (Regex.IsMatch(other.gameObject.name, "torp"))
         {
             Debug.Log("TORP!");
             torpBehavior = other.gameObject.GetComponentInParent <TorpedoBehavior>();
             hullHealth  -= torpBehavior.damage;
             torpBehavior.playerController.torpCount--;
             torpBehavior.playerController.torps.Remove(torpBehavior);
             other.gameObject.transform.parent.gameObject.SetActive(false);
         }
         if (Regex.IsMatch(other.gameObject.name, "phaser"))
         {
             hullHealth -= other.gameObject.GetComponentInParent <PhaserController>().damage;
         }
     }
 }
Ejemplo n.º 3
0
    private void torpDamage(Collider2D collision)
    {
        TorpedoBehavior torpedoBehavior = collision.transform.parent.GetComponent <TorpedoBehavior>();
        float           dmg             = torpedoBehavior.damage;
        float           shieldHealth    = hullController.shieldHealth;

        if (shieldHealth >= dmg)
        {
            shieldHealth -= dmg;
        }
        else
        {
            float diff      = dmg - shieldHealth;
            float shieldDmg = dmg - diff;
            shieldHealth -= shieldDmg;
            hullController.hullHealth -= diff;
        }
        hullController.shieldHealth -= torpedoBehavior.damage;
        torpedoBehavior.gameObject.SetActive(false);

        torpedoBehavior.playerController.torpCount--;
        torpedoBehavior.playerController.torps.Remove(torpedoBehavior);
    }
    public void Generate()
    {
        // 冷却中不会生成
        if (valid == false)
        {
            //Debug.Log("Cool time:" + Time.time);
            return;
        }

        // 求出位置/角度
        Vector3 vec = new Vector3(transform.position.x, transform.position.y, transform.position.z);

        vec += pos.x * transform.right;
        vec += pos.y * transform.up;
        vec += pos.z * transform.forward;
        Quaternion rot = Quaternion.Euler(transform.eulerAngles);
        // 生成
        GameObject newObj = Object.Instantiate(target, vec, rot) as GameObject;

        // 设置父对象
        newObj.transform.parent = parentObj.transform;

        // 设置拥有者对象
        TorpedoCollider torpedoCollider = newObj.GetComponent <TorpedoCollider>();

        if (torpedoCollider)
        {
            torpedoCollider.SetOwner(type);
        }
        else
        {
            Debug.LogError("Not exists TorpedoCollider");
        }
        // 设置速度
        TorpedoBehavior torpedoBehavior = newObj.GetComponent <TorpedoBehavior>();

        if (torpedoBehavior)
        {
            torpedoBehavior.SetSpeed(speed);
        }
        else
        {
            Debug.LogError("Not exists TorpedoBehavior");
        }
        // 设置声音
        Note note = newObj.GetComponentInChildren <Note>();

        if (note)
        {
            note.SetEnable(sound);
        }
        else
        {
            Debug.LogError("Not exists Note");
        }
        // 设置声纳
        parentObj.SendMessage("OnInstantiatedChild", newObj);
        if (sonar)
        {
            newObj.BroadcastMessage("OnActiveSonar");
        }


        // 开始冷却
        valid   = false;
        current = 0.0f;
    }
Ejemplo n.º 5
0
    public void Generate()
    {
        // クールタイム中は生成しない.
        if (valid == false)
        {
            //Debug.Log("Cool time:" + Time.time);
            return;
        }

        // 位置・角度を求める.
        Vector3 vec = new Vector3(transform.position.x, transform.position.y, transform.position.z);

        vec += pos.x * transform.right;
        vec += pos.y * transform.up;
        vec += pos.z * transform.forward;
        Quaternion rot = Quaternion.Euler(transform.eulerAngles);
        // 生成.
        GameObject newObj = Object.Instantiate(target, vec, rot) as GameObject;

        // 親を設定.
        newObj.transform.parent = parentObj.transform;

        // オーナー設定.
        TorpedoCollider torpedoCollider = newObj.GetComponent <TorpedoCollider>();

        if (torpedoCollider)
        {
            torpedoCollider.SetOwner(type);
        }
        else
        {
            Debug.LogError("Not exists TorpedoCollider");
        }
        // スピードセット.
        TorpedoBehavior torpedoBehavior = newObj.GetComponent <TorpedoBehavior>();

        if (torpedoBehavior)
        {
            torpedoBehavior.SetSpeed(speed);
        }
        else
        {
            Debug.LogError("Not exists TorpedoBehavior");
        }
        // 音の設定.
        Note note = newObj.GetComponentInChildren <Note>();

        if (note)
        {
            note.SetEnable(sound);
        }
        else
        {
            Debug.LogError("Not exists Note");
        }
        // ソナーの設定.
        parentObj.SendMessage("OnInstantiatedChild", newObj);
        if (sonar)
        {
            newObj.BroadcastMessage("OnActiveSonar");
        }


        // クールタイム開始.
        valid   = false;
        current = 0.0f;
    }