public void OnTriggerEnter2D(Collider2D other) { Player player = other.GetComponent <Player>(); if (player == null) { return; } PathedProjectile projectile = gameObject.GetComponent <PathedProjectile>(); if (projectile != null) { projectile.CreatEffect(); } Debug.Log("Hit Player"); player.TakeDamage(damageToGive); Controller2D controller = player.GetComponent <Controller2D>(); Vector2 totalVelocity = (Vector2)player.velocity + velocity; ImpactReciever impactReciever = player.GetComponent <ImpactReciever>(); Vector3 direction = player.transform.position - transform.position; impactReciever.AddImpact(direction, Mathf.Clamp(Mathf.Abs(totalVelocity.magnitude), 10, 20)); }
// Update is called once per frame void Update() { if (Input.GetButton("Fire1")) { charge = Mathf.Clamp(charge + Time.deltaTime * 4.0f, 1.0f, 5.0f); } if (Input.GetButtonUp("Fire1")) { LayerMask layerMask = LayerMask.GetMask("Player", "TransparentFX"); layerMask = ~layerMask; RaycastHit hit; if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hit, Mathf.Infinity, layerMask)) { Vector3 hitPos = hit.point; StartCoroutine(DisplayShotRadius(hitPos)); Collider[] colliders = Physics.OverlapSphere(hitPos, radius * charge); foreach (Collider repeledObject in colliders) { Rigidbody rb = repeledObject.GetComponent <Rigidbody>(); if (rb != null) { rb.AddExplosionForce(charge * 150.0f, hitPos, radius * charge, 1.0f); } else { ImpactReciever impactReciever = repeledObject.GetComponent <ImpactReciever>(); if (impactReciever) { Vector3 dir = repeledObject.transform.position - hitPos; //float force = Mathf.Clamp((charge * 150.0f) / 3.0f, 0.0f, 100.0f); impactReciever.AddImpact(dir, charge * 20.0f); } } } } charge = 0.0f; } }
void Start() { Collider [] ObjectsColliding = Physics.OverlapSphere(transform.position, radius); foreach (Collider objectColliding in ObjectsColliding) { ImpactReciever ir = objectColliding.GetComponent <ImpactReciever>(); if (ir != null) { ir.AddImpact(ir.transform.position - transform.position, force); objectColliding.GetComponent <PlayerHealth>().takeDamage(damage); } else { Rigidbody rb = objectColliding.GetComponent <Rigidbody>(); if (rb != null) { rb.AddExplosionForce(force, transform.position, radius); } } } }