void Update() { // Simulate collision rays for (int i = 0; i < collisionRays.Length; i++) { LayerMask layerMask = 1 << 8; // Wall layer Vector2 PosXY = new Vector2(transform.position.x, transform.position.y); //Debug.DrawRay(PosXY + collisionRays[i].rayOffset, collisionRays[i].rayDir, Color.green); RaycastHit2D rcHit = Physics2D.Raycast(PosXY + collisionRays[i].rayOffset, collisionRays[i].rayDir, collisionRays[i].rayDir.magnitude, layerMask); if (rcHit.collider != null) { //Debug.Log(i + " hit", rcHit.collider.gameObject); if (rayStay[i] == false) { // Choose which dir to send it in switch (collisionRays[i].reboundDir) { case ReboundDir.PosX: //vel.x = Mathf.Max(0, vel.x); vel.x = Mathf.Abs(vel.x * reboundModifier); break; case ReboundDir.NegX: //vel.x = Mathf.Min(0, vel.x); vel.x = -Mathf.Abs(vel.x * reboundModifier); break; case ReboundDir.PosY: vel.y = Mathf.Abs(vel.y * reboundModifier); break; case ReboundDir.NegY: vel.y = -Mathf.Abs(vel.y * reboundModifier); break; default: break; } takeWallDamage = true; } rayStay[i] = true; } else { rayStay[i] = false; } } if (takeWallDamage) { PhoneHealth.TakeDamage(3); audioSource.Play(); takeWallDamage = false; } }
void Update() { // Changing the phone damage if its still on the phone with a delay if (isColliding || theresFire) { damageTimer += Time.deltaTime; if (damageTimer >= damagePS) { damageTimer = 0.0f; PhoneHealth.TakeDamage(damage); //Debug.Log(PhoneHealth.phoneHealth); } } }