private void OnTriggerStay(Collider other) { if (other.tag == "MainCharacter") { //侦测到玩家 if (m_light1.intensity < orig_intensity + 10f) { m_light1.intensity += Time.deltaTime * 5f; m_light2.intensity += Time.deltaTime * 5f; } SendMessageUpwards("SetState", 1); if (m_DamageTimer > 0) { m_DamageTimer -= Time.deltaTime; } else { m_DamageTimer = DamageTimer; m_player.GetDamage(Mathf.RoundToInt((int)m_light1.intensity)); m_player.LoseEnergy((int)AttackEnergy); } is_Trigger = true; } }
private void OnCollisionEnter(Collision collision) { if (collision.transform.tag == "MainCharacter") { m_player.GetDamage(Damage); //Destroy(this.gameObject); } }
private void OnCollisionEnter(Collision collision) { print(collision.transform.name); if (collision.transform.tag == "MainCharacter") { m_player.GetDamage(Damage); } }
//private void OnCollisionEnter(Collision collision) //{ // print("3333"); // print(collision.transform.name); // m_player.GetDamage(Damage); //} //private void OnCollisionStay(Collision collision) //{ // print(collision.transform.name); // m_player.GetDamage(Damage); //} //private void OnCollisionExit(Collision collision) //{ // print(collision.transform.name); // m_player.GetDamage(Damage); //} private void OnCollisionEnter(Collision other) { //print("巡逻兵子弹命中物体:\t" + other.transform.name); if (other.transform.tag == "MainCharacter") { m_player.GetDamage(Damage); Destroy(this.gameObject); } }
void Update() { RaycastHit hit; Vector3 Sc; // 变换大小 Sc.x = 0.5f; Sc.z = 0.5f; //发射射线,通过获取射线碰撞后返回的距离来变换激光模型的y轴上的值 if (Timer > 0) { Timer -= Time.deltaTime; } if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, 600f, mask.value)) { Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward)); Sc.y = hit.distance; // print("Sc.y:"+Sc.y); //print(hit.transform.name); if (hit.transform.tag == "Terrian") { Sc.y += 1f; } FXef.transform.position = hit.point; //让激光击中物体的粒子效果的空间位置与射线碰撞的点的空间位置保持一致; FXef.SetActive(true); if (Timer < 0) { if (hit.transform.tag == "MainCharacter") { m_player.GetDamage(Damage); Timer = AttackColdDown; } } } //当激光没有碰撞到物体时,让射线的长度保持为500m,并设置击中效果为不显示 else { Sc.y = 500; FXef.SetActive(false); } Line.transform.localScale = Sc * offset; }