void TryDestory(Collision2D coll) { if (coll.gameObject.tag == photonTag) { Photon photon = coll.transform.GetComponent<Photon>(); photon.InstantDead(); } }
void OnCollisionEnter2D(Collision2D coll) { Debug.Log("Hit!"); if (coll.gameObject.tag == photonTag) { Photon photon = coll.transform.GetComponent <Photon>(); photon.InstantDead(); if (targetStatus != null) { targetStatus.addScore(1); } } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == photonTag) { Photon photon = collision.transform.GetComponent <Photon>(); points = photon.curEnergy; photon.InstantDead(); if (targetStatus != null && collision.gameObject.GetComponent <Photon>().shooter == shooter) { //Debug.Log("Hit!"); //Debug.Log("in"); //Debug.Log(photon.transform.position); //Debug.Log(photon.GetComponent<Rigidbody2D>().velocity); RaycastHit2D hit = Physics2D.Raycast(photon.transform.position, photon.GetComponent <Rigidbody2D>().velocity, 1f); ParticleSystem newPs; if (hit == true) { newPs = Instantiate(ps, (Vector3)hit.point, Quaternion.Euler(0, 0, 0), transform); Destroy(newPs, 1); //Debug.Log("here??"); TryPlayHitSound(); } else { //hit = Physics2D.Raycast(photon.transform.position, -photon.GetComponent<Rigidbody2D>().velocity, 1f); //if(hit == true) //{ // newPs = Instantiate(ps, (Vector3)hit.point, Quaternion.Euler(0, 0, 0), transform); // Destroy(newPs, 1); // //Debug.Log("here?????"); // TryPlayHitSound(); //} newPs = Instantiate(ps, collision.transform.position, Quaternion.Euler(0, 0, 0), transform); Destroy(newPs, 1); //Debug.Log("here?????"); TryPlayHitSound(); } //Debug.Log("damn"); selfStatus.MinusHealth(points); //targetStatus.addScore(1); } } }
private void OnTriggerEnter2D(Collider2D coll) { if (coll.tag != photonTag) { return; } Photon photon = coll.transform.GetComponent <Photon>(); Rigidbody2D photonRb = coll.transform.GetComponent <Rigidbody2D>(); Transform photonTransform = coll.transform; GameObject photonGO = coll.gameObject; if (!photon.canScatter || photon.curEnergy < minScatterEnergy || photon.lastScatterColl) { return; } Vector3 veloDir = photonRb.velocity.normalized; float veloIncomingAngle = Vector3.Angle(veloDir, transform.right); if (veloIncomingAngle > 90f) { veloIncomingAngle = 180f - veloIncomingAngle; } //Debug.Log(veloIncomingAngle); if (veloIncomingAngle < minScatterAngle) { return; } Vector3 normal; if (Vector3.Dot(veloDir, transform.up) > 0) { normal = transform.up; } else { normal = -transform.up; } if (!doubleSided && Vector3.Dot(veloDir, transform.up) < 0f) { return; } // this photon could be scattered //Debug.Log(transform.rotation.eulerAngles); if (ps) { ParticleSystem newPs = Instantiate(ps, coll.transform.position, Quaternion.Euler( transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z + 90)); // newPs.transform.parent = transform; } float deltaAngle = scatterAngle / (scatterCount - 1); float startAngle = -scatterAngle / 2f; float scatteredEnergy = photon.curEnergy / scatterCount; for (int i = 0; i < scatterCount; ++i) { float currentAngle = startAngle + i * deltaAngle; Quaternion scatterRot = Quaternion.Euler(0f, 0f, currentAngle); Vector3 scatteredDir = scatterRot * normal; Quaternion newRot = Quaternion.FromToRotation(Vector3.up, scatteredDir); GameObject newPhotonGO = Instantiate(photonGO, photonTransform.position, newRot); Photon newPhoton = newPhotonGO.GetComponent <Photon>(); newPhoton.StartScatterImmune(scatterImmuneTime); newPhoton.lastScatterColl = scatterColl; newPhoton.curEnergy = scatteredEnergy; } photon.lastScatterColl = scatterColl; photon.InstantDead(); }