- Home /
 
               Question by 
               Ronin Davis · Apr 24, 2015 at 06:01 PM · 
                raycastmouseshootingraycastingshoot  
              
 
              Problem with raycasting in direction of mouse
Hi, i have been working on a 2d platform shooter for a while now, and i have run into a problem with a shooting script that uses raycasting. I can't get to raycast in the direction of the mouse correctly. Her is my script:
 #pragma strict
 public var firing : GameObject;
 var range: float = 1000;
 var force: float = 1000;
 var clip : int   = 20;
 var bulletsPerClip:int  = 60;
 var reloadTime :float  = 3.3;
 var bulletsLeft: int = 0;
 var shootTimer: float = 0;
 var shootCooler: float = 0.1;
 var shootAudio: AudioClip;
 var reloadAudio: AudioClip;
 var damage: int = 50;
 var aimScript;
 var gunEnd : Transform;
 var lookFactor = 0.8;
 private var mousePos : Vector2;
 private var screenPos : Vector3;
 var headshotDamage : float = 100;
 var legshotDamage : float = 25;
 
 function Start () {
     bulletsLeft = bulletsPerClip;
 }
 
 function Update () {
     mousePos = Input.mousePosition;
     screenPos = GetComponent.<Camera>().main.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y, transform.position.z - GetComponent.<Camera>().main.transform.position.z));
     
     if(shootTimer > 0) {
         shootTimer -= Time.deltaTime;
     }
     if(shootTimer < 0) {
         shootTimer = 0;
     }
     if(Input.GetMouseButton(0) && bulletsLeft) {
         if(shootTimer == 0) {
             PlayShootAudio();
             RayShoot();
             shootTimer = shootCooler;
         }
     }else{
         firing.SetActive(false);
     }
 }
 
 function RayShoot(){
     var hit: RaycastHit;
     var directionRay = gunEnd.TransformDirection(mousePos);
     Debug.DrawRay(gunEnd.position, directionRay * range, Color.red);
     firing.SetActive(true);
     
     if(Physics.Raycast(gunEnd.position, directionRay, hit, range)){
         if(hit.collider.gameObject.name == GameObject.FindWithTag("Body").gameObject.name){
             Debug.Log("BodyShot");
         }else if(hit.collider.gameObject.name == GameObject.FindWithTag("Head").gameObject.name){
             damage = headshotDamage;
         }else if(hit.collider.gameObject.name == GameObject.FindWithTag("Legs").gameObject.name){
             damage = legshotDamage;
         }
     }
     bulletsLeft --;
     if(bulletsLeft < 0){
         bulletsLeft = 0;
         clip --;
     }
     
     if(bulletsLeft == 0){
         Reload();
     }
 
 }
 
 function Reload(){
     PlayReloadAudio();
     yield WaitForSeconds(reloadTime);
     
     if(clip >0){
         bulletsLeft = bulletsPerClip;
     }
 
 }
 
 function PlayShootAudio(){
     GetComponent.<AudioSource>().PlayOneShot(shootAudio);
 }
 
 function PlayReloadAudio(){
     GetComponent.<AudioSource>().PlayOneShot(reloadAudio);
     
 }
Can someone please tell me where i am going wrong the part way i state which direction i want it to go is here:
 function RayShoot(){
     var hit: RaycastHit;
     var directionRay = gunEnd.TransformDirection(mousePos);
     Debug.DrawRay(gunEnd.position, directionRay * range, Color.red);
     firing.SetActive(true);
     
     if(Physics.Raycast(gunEnd.position, directionRay, hit, range)){
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                