hi, im making a grapling gun script and have some issues when aiming it. its a third person game and im using raycast from cam to mouseposition to aim my gun. but whenever my ray is not hitting an object it automatically points towards the Scene origin and i cant fire my gun to where i was supossed to be pointing at. here is part of the script.
RaycastHit hit;
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
Physics.Raycast (ray, out hit);
float dist= Vector3.Distance(Grap.transform.position, hit.point);
Debug.DrawLine(Grap.transform.position, hit.point);
//on click
if (Input.GetButtonDown(button)){
//when shooting get target position
target=hit.point;
if (Physics.Raycast (ray, out hit)==false){
Debug.Log ("out of range");
Vector3 screenpoint=Input.mousePosition;
screenpoint.z=range;
target=(Grap.transform.position+ray.direction*range).normalized;
Debug.DrawLine(Grap.transform.position, ray.direction*range);
}
Debug.Log ("target"+target);
//instanciate hook
hookinstance=Instantiate(hook, Grap.transform.position,Grap.transform.rotation)as GameObject;
//shoot hook
hookinstance.rigidbody.AddForce(Vector3.Normalize(target-transform.position)*shootForce);
shoot=true;
}
Maybe the more important code is missing at the bottom. I noticed on line 3, you are using hit, even though RayCast may have returned false. Then you aren't using dist in the code shown, so I suspect it is used further down. You shouldn't use dist when no object is hit in RayCast.
– supernat