How can I make camera move when the ray emitted from it hits any object and reaches certain amount of ray length

I want to make my camera move downwards when it’s ray gets hit to an object and when the object reaches the ray length of 5. Following is the code that I tried to accomplish above mentioned task.

RaycastHit hit3;
		float theDistance3;

			Vector3 top = transform.TransformDirection (0, 26, 45) * 10;//Top
		    Debug.DrawRay (transform.position, top, Color.green);

		if (Physics.Raycast(transform.position, (top), out hit3))
			{
				theDistance3 = hit3.distance;
				print (theDistance3 + " " + hit3.collider.gameObject.name);
			if (theDistance3 < 5) 
			{
				Vector3 simon = new Vector3 (0, 0, -1);
				transform.position = Vector3.Lerp (transform.position, simon, Time.deltaTime * speed);
			}
		    }

1 Answer

1

After trying for a long time I got the following code.

RaycastHit hit3;
Vector3 top = transform.TransformDirection (0, 26, 45) * 10;//Top
Debug.DrawRay (transform.position, top, Color.green);
if (Physics.Raycast(transform.position, (top), out hit3) && hit3.distance < 2 && transform.position.y > 0.5)
{
transform.Translate(0f, -10f * Time.deltaTime, 0f);
}
if (Physics.Raycast(transform.position, (top), out hit3) && hit3.distance > 2 && transform.position.y < 1.49f)
{
transform.Translate(0f, 10f * Time.deltaTime, 0f);
}
if (!Physics.Raycast(transform.position, (top), out hit3) && transform.position.y < 1.49f)
{
transform.Translate(0f, 10f * Time.deltaTime, 0f);
}