I want my raycast shooting to be 100% accurate so it hits the middle of the map
but I don’t know how to do that.
Here is my shooting script
#pragma strict
var damage:float = 38;
var range = 100.0;
var force = 10.0;
var muzzleFlash : Renderer;
var muzzleLight : Light;
var UMPMenu: GUIStyle;
var ReloadMenu: GUIStyle;
var ReloadWarning = false;
static var _UMPCanReload = false;
var clipSize: int = 25;
var bulletsInClip = 25;
var bulletsLeft = 75;
var allowfire : boolean = true;
function Start (){
muzzleFlash.enabled = false;
muzzleLight.enabled = false;
}
function Update () {
if(Input.GetMouseButton(0)){
if(bulletsInClip >= 1){
if(allowfire == true){
fire();
}
}
}
if (Input.GetKeyDown (KeyCode.R)){
if(bulletsInClip == 0){
if(bulletsLeft >= 25){
Reload();
}
}
}
if(bulletsInClip == 0){
if(bulletsLeft >= 25){
ReloadWarning = true;
}
} else {
ReloadWarning = false;
}
if(bulletsInClip == 0){
if(bulletsLeft >= 25){
_UMPCanReload = true;
}
} else {
_UMPCanReload = false;
}
}
function OnGUI() {
if(ReloadWarning == true){
GUI.Label (Rect (Screen.width / 2.2, Screen.height / 2.5, 200, 200), "Press R to reload.", ReloadMenu);
}
GUI.Label (Rect (10, 650, 350, 350), "UMP .45", UMPMenu);
GUI.Label (Rect (10, 700, 350, 350), bulletsInClip + " / " + bulletsLeft, UMPMenu);
}
function fire(){
allowfire = false;
audio.Play();
bulletsInClip--;
var direction = transform.TransformDirection(Vector3.forward);
var hit : RaycastHit;
// Did we hit anything?
if (Physics.Raycast (transform.position, direction, hit, range)) {
Debug.DrawRay(transform.position, direction * range);
// Apply a force to the rigidbody we hit
if (hit.rigidbody)
hit.rigidbody.AddForceAtPosition(force * direction, hit.point);
hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
}
muzzleFlash.renderer.enabled = true;
muzzleLight.enabled = true;
yield WaitForSeconds (0.04);
muzzleFlash.renderer.enabled = false;
muzzleLight.enabled = false;
yield WaitForSeconds(0.2);
allowfire = true;
}
function OnTriggerEnter(hit:Collider){
if(hit.tag == "Enemy"){
hit.transform.SendMessage("Damage",damage);
}
}
function Reload(){
allowfire = false;
yield WaitForSeconds (1);
bulletsInClip = clipSize;
bulletsLeft = (bulletsLeft - clipSize);
yield WaitForSeconds (0.3);
allowfire = true;
}