- Home /
 
Why is this ray returning distance as zero?
I'm trying to find out the distance between the start of a raycast and the collider that the raycast hits. However the distance variable is only ever returning zero. I tested a few other of the variables and those don't seem to be returning anything either. Point returned 0,0; transform returned null; etc. Here's the code.`using UnityEngine; using System.Collections;
public class Movement : MonoBehaviour {
 public float speed;
 float horizonal_input;
 public Transform bottom_forward;
 public Vector3 bottom_forward_position;
 RaycastHit2D hit;
 LayerMask ground = 1 << 8;
     
 // Use this for initialization
 void Start () {
 }
 
 // Update is called once per frame
 void Update () {
     bottom_forward_position = bottom_forward.position;
     horizonal_input = Input.GetAxisRaw ("Horizontal");
     transform.Translate (horizonal_input * speed * Time.deltaTime,0,0);
     if (Physics2D.Raycast(bottom_forward_position, Vector2.up, Mathf.Infinity, ground)){
             Debug.Log(hit.distance);
     }
 }
 
               } `
Answer by robertbu · Dec 01, 2014 at 06:18 AM
Physics2D.Raycast() returns the RaycastHit2D. You are not assigning the return value to anything, and therefore hit will always be uninitialized. In addition, Physics2D.Raycast() always returns a RaycastHit, so it will never be false. To check for a hit, you can check the hit.collider. Here are two lines from the reference:
 var hit: RaycastHit2D = Physics2D.Raycast(transform.position, -Vector2.up);
 
 // If it hits something...
 if (hit.collider != null) {
 
              Your answer
 
             Follow this Question
Related Questions
Damage alterations at different range. 1 Answer
resizing spherecast radius over distance? 4 Answers
Layer Mask on raycast2d not working? 1 Answer
Raycast for a 2D objects 0 Answers
Find alternate shortest paths 0 Answers