private void OnTriggerEnter2D(Collider2D collision) { if (!collision.isTrigger) { CurrentEffectableScript currentEffectable = collision.GetComponent <CurrentEffectableScript>(); if (currentEffectable != null && currentEffectable.extendsTimer) { pushing = true; pushnum++; } } }
private void OnTriggerExit2D(Collider2D collision) { if (!collision.isTrigger) { CurrentEffectableScript currentEffectable = collision.GetComponent <CurrentEffectableScript>(); if (currentEffectable != null && currentEffectable.extendsTimer) { pushnum--; if (pushnum <= 0) { pushing = false; pushnum = 0; } } CurrentLeaveVelocitySet currentLeave = collision.GetComponent <CurrentLeaveVelocitySet>(); if (currentLeave != null) { currentLeave.OnCurrrentLeave(); } } }
private void OnTriggerStay2D(Collider2D collision) { if (!collision.isTrigger) { Vector2 temp = new Vector2(collision.transform.position.x, collision.transform.position.y); int testtemp = TestCurrentPoint(temp); Vector2 currentspeed = points[testtemp + 1] - points[testtemp]; Vector2 perp = new Vector2(-currentspeed.y, currentspeed.x); buyonacyLine = (Vector2.Dot(Physics2D.gravity * 0.1f, perp) / perp.sqrMagnitude) * perp * -1; CurrentEffectableScript currentEffectable = collision.GetComponent <CurrentEffectableScript>(); if (currentEffectable) { currentEffectable.ApplyCurrentEffect(currentspeed.normalized, buyonacyLine, speed); } else { collision.GetComponent <Rigidbody2D>().AddForce((currentspeed.normalized * speed) + buyonacyLine / 2); } //for current test { CurrentDebugScript cds = collision.GetComponent <CurrentDebugScript>(); if (cds != null) { /*float lsqrd = Vector2.SqrMagnitude(points[testtemp] - points[testtemp + 1]); * float t = Vector2.Dot(temp - points[testtemp + 1], points[testtemp] - points[testtemp + 1]) / lsqrd; * //Vector2 proj = points[testtemp + 1] + t * (points[testtemp] - points[testtemp + 1]); * //float t = Vector2.Dot(temp, points[testtemp] - points[testtemp + 1]) / lsqrd; * Vector2 proj = points[testtemp] + t * (points[testtemp] - points[testtemp + 1]); * proj -= temp; * cds.DebugPoint(proj,points[testtemp]);*/ float lsqrd = Vector2.SqrMagnitude(points[testtemp] - points[testtemp + 1]); float t = Mathf.Clamp(Vector2.Dot(temp - points[testtemp], points[testtemp + 1] - points[testtemp]) / lsqrd, 0, 0.99f); Vector2 proj = points[testtemp] + t * (points[testtemp + 1] - points[testtemp]); cds.DebugPoint(temp - proj, points[testtemp]); } } } }