- 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