- Home /
 
Raycasting Problems...
I am writing a script to hopefully move an object to the position of the Raycast hit but it doesn't seem to be working and whatever alternative I try, it still doesn't work. Please can anyone help? Thanks.
 var CameraDistance:float;
 var MaxCameraDistance:float = 10;
 var Move:Transform;
 
 function Start()
 {
     CameraDistance = Camera.main.GetComponent("MouseOrbit").distance;
 }
 
 function Update()
 {
     var RotateTo = Camera.main.transform.position-gameObject.transform.position;
     var hit:RaycastHit;
     var ray = gameObject.transform.position;
     
     if(Physics.Raycast(ray,hit.point,MaxCameraDistance))
     {
         if(hit.collider)
         {
             Move.position = hit.point;
         }
     }
     
     Debug.DrawRay(gameObject.transform.position,RotateTo);
 }
 
              Could it be that you set the distance too short? Try adding:
 CameraDistance = Camera.main.GetComponent("$$anonymous$$ouseOrbit").distance+1;
 
                  Other than that your ray seem a bit suspect. You need a direction as well. For instance:
 var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
 
                  or
 var ray : Ray; 
 ray.origin = transform.position;
 ray.direction = Vector3.forward;
 
 
                 I know it's not the distance because I have the camera set to the same distance as the as the $$anonymous$$ouseOrbit distance and the object which is supposed to intersect the raycast is infront of the camera.
I don't know if I can use the ScreenPointToRay because I want the Raycast to start from the game object but I don't know if i'm right?
Thanks, ill try your suggestion
xD No guys, you've set the $$anonymous$$ove variable, but you didn't use it to change the position.
Check my answer below and please follow the forum link below. Thank you :)
Answer by IgorAherne · Aug 14, 2013 at 08:08 PM
 var CameraDistance:float;
 var MaxCameraDistance:float = 20;
 var Move:Transform;
  
 function Start()
 {
     CameraDistance = Camera.main.GetComponent("MouseOrbit").distance;
 }
  
 function Update()
 {  
     var hit:RaycastHit;
     var ray = gameObject.transform.position;
  
     if(Physics.Raycast(ray,hit.point,MaxCameraDistance))
     {
        if(hit.collider)
        {
          Move.position = hit.point;
        }
      transform.postion = Vector3.Lerp(transform.position, Move.position, Time.deltaTime*2);
     }// end Raycast
 } // end Update()
 
               Please check this as well :) http://forum.unity3d.com/threads/191923-Full-corse-how-to-make-a-horror-game-AVAILABLE
Your answer
 
             Follow this Question
Related Questions
Targetting two objects at once 2 Answers
C Sharp Clickable Object 1 Answer
How to block a raycast? (Java) 1 Answer
How to read note by pressing "E" using RayCast only? 1 Answer
Java or Javascript? 4 Answers