private void OnTriggerStay2D(Collider2D collider) { NWeaponPlasma plasma = collider.transform.GetComponentInParent <NWeaponPlasma>(); if (plasma != null) { plasmaPull = plasma; } }
private void OnTriggerStay2D(Collider2D collider) { NWeaponPlasma plasma = collider.transform.GetComponentInParent <NWeaponPlasma>(); if (plasma != null) { if (element != EElement.plasma || transform.localScale.x < plasma.transform.localScale.x) { Vector2 dist = collider.transform.position - transform.position; Vector2 oldVelocity = rb.velocity; rb.velocity += (dist / dist.sqrMagnitude) * (plasma.transform.localScale.x); float angleBetween = Vector2.Angle(oldVelocity, rb.velocity); transform.Rotate(0f, 0f, -angleBetween); } } }
void OnCollisionEnter2D(Collision2D collision) { NPlayerController np = collision.collider.gameObject.GetComponent <NPlayerController>(); NWeapon w = collision.collider.gameObject.GetComponent <NWeapon>(); if (np != null && gracePeriod <= 0) { np.HitByPlasma(transform.position); IEnumerator explosion = Explosion(1f, 0.25f); StartCoroutine(explosion); } else if (collision.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Platforms")) && !collided) { IEnumerator explosion = Explosion(1f, 0.25f); StartCoroutine(explosion); } else if (w != null) { NWeaponPlasma wp = collision.collider.gameObject.GetComponent <NWeaponPlasma>(); if (wp != null) { if (transform.localScale.x > wp.transform.localScale.x) { wp.HitByPlasma(transform.position); IEnumerator explosion = Explosion(2f, 0.5f); StartCoroutine(explosion); } } else { w.HitByPlasma(transform.position); IEnumerator explosion = Explosion(0.25f, 0.1f); StartCoroutine(explosion); } } }