public float distance ;

説明

レイの原点から衝突点までの距離

レイの場合、距離はレイの原点から衝突点までのベクトルの大きさを表します。

sweptVolume や sphereCast では、距離は、物体の原点から他のコライダーに接触する移動点までのベクトルの大きさを表します。

RaycastHit.point は衝突が発生する空間位置を表すことに注意してください。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { 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); } } } }