- 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