I have been using their [Scripting API] (Unity - Scripting API: RaycastHit.distance). But is makes the object move. This is the code
public float moveForce = 1.0F;
public float rotateTorque = 1.0F;
public float hoverHeight = 4.0F;
public float hoverForce = 5.0F;
public float hoverDamp = 0.5F;
public Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
rb.drag = 0.5F;
rb.angularDrag = 0.5F;
}
void FixedUpdate() {
rb.AddForce(Input.GetAxis("Vertical") * moveForce * transform.forward);
rb.AddTorque(Input.GetAxis("Horizontal") * rotateTorque * Vector3.up);
RaycastHit hit;
Ray downRay = new Ray(transform.position, -Vector3.up);
if (Physics.Raycast(downRay, out hit)) {
float hoverError = hoverHeight - hit.distance;
if (hoverError > 0) {
float upwardSpeed = rb.velocity.y;
float lift = hoverError * hoverForce - upwardSpeed * hoverDamp;
rb.AddForce(lift * Vector3.up);
}
}
}
And it makes the object hover. I got rid of everything using the Rigidbody and the move floats.
void FixedUpdate()
{
RaycastHit hit;
Ray downRay = new Ray(transform.position, -Vector3.up);
Debug.Log(hit.distance);
}
But and error says “Use of unassigned local variable ‘hit’”. Can someone please explain how I can get the hit distance.