How to fire a gun using raycasting and still add force

Hi. I have a gun code that I wrote and I was wondering if there was a way to make the rigidbodies that I shoot have a force applied at the point at which the raycast hit.

If necessary, here is my code:

enum FireType 
{
    RayCast,
    Projectile
}
enum ShotType 
{
    Semi_Auto,
    Full_Auto,
}
var Clips : int;

var clipSize : int;

var unlimited : boolean = false;

var autoReload : boolean = true;

var reloadTime : int;

var gunRange : int;

var fireRate : float;

var projectilePrefab : Rigidbody;

var projectileShotPower : float;

var Damage : int;

var fireType : FireType;

var shotType : ShotType;

var shotSound : AudioClip;

var OutOfAmmoSound : AudioClip;

var reloadSound : AudioClip;

var ShotEmitter : ParticleEmitter[];

var tipOfGun : Transform;

var centerScreen : Transform;

var WoodParticle : GameObject;

var MetalParticle : GameObject;

var ConcreteParticle : GameObject;

var DirtParticle : GameObject;

var SnowParticle : GameObject;

var WaterParticle : GameObject;

var EnemyParticle : GameObject;

var gunName : String;

var bulletMark : GameObject;

var gunCamera : Camera;

var guiTex : GUITexture;

var CrossHeir : Texture2D;

var crossHeirChangeColor : Color;

var reloadElapse : float;

var pushPower : float;

private var Audio : AudioSource;
private var freeToShoot : boolean = true;
private var freeToReload : boolean = true;
private var shotsLeft : int;
private var clipsLeft : int;

function Awake()
{
    for(var i = 0; i < ShotEmitter.length; i++)
    {
        ShotEmitter*.emit = false;*
 *}*
 *Audio = gameObject.GetComponent(AudioSource);*
 *shotsLeft = clipSize;*
 *clipsLeft = Clips;*
*}*
*function Update ()* 
*{*
 *if(Input.GetButton("Fire1"))*
 *{*
 *if(fireType == FireType.RayCast)*
 *{*
 *if(shotType == ShotType.Semi_Auto)*
 *{*
 *Shoot(true, false);*
 *} else if (shotType == ShotType.Full_Auto)*
 *{*
 *Shoot(false, false);*
 *}*
 *} else if (fireType == FireType.Projectile)*
 *{*
 *Shoot(false, true);*
 *}*
 *} else {*
 *freeToShoot = true;*
 *}*
 *if(shotsLeft <= 0 && autoReload)*
 *{*
 *Reload();*
 *freeToShoot = false;*
 *} else if (shotsLeft <= 0 && !autoReload)*
 *{*
 *freeToShoot = false;*
 *if(Input.GetButtonDown("Fire2"))*
 *{*
 *Reload();*
 *}*
 *}*
 *if(clipsLeft == 0)*
 *{*
 *freeToReload = false;*
 *}*
*}*
*function Shoot(oneShot : boolean, isProjectile : boolean)*
*{*
 *if(freeToShoot == true)*
 *{*
 *if(oneShot)*
 *{*
 *var SAhit : RaycastHit;*
 *var SAfwd = transform.TransformDirection(Vector3.forward);*
 *GenerateShotGraphics();*
 *Debug.Log("I am about to generate shot graphics");*
 *if(!unlimited)*
 *{*
 *shotsLeft--;*
 *}*
 *if(Physics.Raycast(centerScreen.transform.position, SAfwd, SAhit, gunRange))*
 *{*
 *if(SAhit.collider.tag != "Enemy")*
 *{*
 *GenerateHitGraphics(SAhit, SAhit);*
 *ApplyForce(SAhit);*
 *} else {*
 *HitEnemy(SAhit);*
 *}*
 *}*
 *freeToShoot = false;*
 *}*
 *if(!oneShot)*
 *{*
 *var nextShot : float;*
 *if(Time.time > nextShot)*
 *{*
 *nextShot = Time.time + fireRate;*
 *var FAhit : RaycastHit;*
 *var FAfwd = transform.TransformDirection(Vector3.forward);*
 *GenerateShotGraphics();*
 *if(!unlimited)*
 *{*
 *shotsLeft--;*
 *}*
 *if(Physics.Raycast(centerScreen.transform.position, FAfwd, FAhit, gunRange))*
 *{*
 *if(FAhit.collider.tag != "Enemy")*
 *{*
 *GenerateHitGraphics(FAhit, FAhit);*
 *ApplyForce(FAhit);*
 *} else {*
 *HitEnemy(FAhit);*
 *}* 
 *}*
 *}*
 *}*
 *}*
*}*
*function GenerateHitGraphics(hit : RaycastHit, BMhit : RaycastHit)*
*{*
 *var go : GameObject;*
 *var delta : float = -0.02;*
 *var hitUpDir : Vector3 = hit.normal;*
 *if(!BMhit.collider.rigidbody)*
 *{*
 *var bm = Instantiate(bulletMark, BMhit.point, Quaternion.FromToRotation(Vector3.forward, -BMhit.normal));*
 *bm.AddComponent(BulletMark);*
 *}*
 *switch(hit.collider.tag)*
 *{*
 *case "Wood":*
 *go = Instantiate(WoodParticle, hit.point, Quaternion.FromToRotation(Vector3.forward, hitUpDir)) as GameObject;*
 *break;*
 *case "Metal":*
 *go = Instantiate(MetalParticle, hit.point, Quaternion.FromToRotation(Vector3.forward, hitUpDir)) as GameObject;*
 *break;*
 *case "Snow":*
 *go = Instantiate(SnowParticle, hit.point, Quaternion.FromToRotation(Vector3.forward, hitUpDir)) as GameObject;*
 *break;*
 *case "Concrete":*
 *go = Instantiate(ConcreteParticle, hit.point, Quaternion.FromToRotation(Vector3.forward, hitUpDir)) as GameObject;*
 *break;*
 *case "Dirt":*
 *go = Instantiate(DirtParticle, hit.point, Quaternion.FromToRotation(Vector3.forward, hitUpDir)) as GameObject;*
 *break;*
 *case "water":*
 *go = Instantiate(WaterParticle, hit.point, Quaternion.FromToRotation(Vector3.forward, hitUpDir)) as GameObject;*
 *break;*
 *}*
 *Destroy(go, go.gameObject.GetComponent(ParticleEmitter).maxEnergy);*
*}*
*function GenerateShotGraphics()*
*{*
 *for(var i = 0; i < ShotEmitter.length; i++)*
 *{*
 _ShotEmitter*.Emit();*_
 _*}*_
 _*PlayShootSound();*_
_*}*_
_*function HitEnemy(hit : RaycastHit)*_
_*{*_
 _*var go : GameObject;*_
 _*var delta : float = -0.02;*_
 _*var hitUpDir : Vector3 = hit.normal;*_
 _*go = Instantiate(EnemyParticle, hit.point, Quaternion.FromToRotation(Vector3.forward, hitUpDir)) as GameObject;*_
 _*SendMessageUpwards("ApplyDamage", Damage, SendMessageOptions.DontRequireReceiver);*_
 _*Destroy(go, go.gameObject.GetComponent(ParticleEmitter).maxEnergy);*_
_*}*_
_*function ApplyForce(hit : RaycastHit)*_
_*{*_
 _*var body : Rigidbody = hit.collider.rigidbody;*_
 _*if(body)*_
 _*{*_
 _*if(!body.isKinematic)*_
 _*{*_
 _*var direction : Vector3 = hit.collider.transform.position - centerScreen.position;*_
 <em>_body.AddForceAtPosition(direction.normalized * pushPower, hit.point, ForceMode.Impulse);_</em>
 _*}*_
 _*}*_
_*}*_
_*function Reload()*_
_*{*_
 _*if(freeToReload)*_
 _*{*_
 _*//Debug.Log("I am reloading");*_
 _*FreeToShoot = false;*_
 _*shotsLeft = clipSize;*_
 _*clipsLeft--;*_
 _*yield WaitForSeconds(reloadElapse);*_
 _*guiTex.texture = CrossHeir;*_
 _*FreeToShoot = true;*_
 _*}*_
_*}*_
_*//Audio functions*_
_*function PlayShootSound()*_
_*{*_
 _*Audio.PlayOneShot(shotSound);*_
_*}*_
_*function PlayOutOfAmmoSound()*_
_*{*_
 _*Audio.PlayOneShot(OutOfAmmoSound, 1);*_
 _*Debug.Log("Out Of Ammo");*_
_*}*_
_*function PlayReloadSound()*_
_*{*_
_*Audio.PlayOneShot(reloadSound, 1);*_
_*```*_
_*<p>}</p>*_
hit.rigidbody(addForce);

or something like that...