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