public void Fire(Vector2 aim) { var spread = Random.Range(-spreading / 2f, spreading / 2f); var spreadAngle = Quaternion.AngleAxis(spread, Vector3.back); Vector3 firingDirection = spreadAngle * transform.up * 20; if (curCooldown == 0.0f) { curCooldown = Cooldown; RaycastHit2D hit = Physics2D.Raycast(transform.position, firingDirection); DrawBullitTrail(transform.position, firingDirection); if (hit.collider != null) { var targetPoint = new Vector2(hit.point.x, hit.point.y); var hitExplosion = Instantiate( _hitExplosionPrefab, targetPoint, Quaternion.identity) .AddComponent <ObjectDestroyer>(); hitExplosion.name = "Hit Explosion"; DebugDrawer.DrawCross(targetPoint, Color.red); var vController = hit.collider.gameObject.GetComponent <VehicleController>(); if (vController == null) { return; } var vehicle = vController.CurrentVehicle; vehicle.ReceiveDamage(Damage, DamageType.Bullit); } } }