public float distance ;

描述

从射线原点到撞击点的距离。

对于射线,该距离表示从射线原点到撞击点的矢量大小。

对于扫描的体积或球体投射,该距离表示从原点到体积与其他碰撞体接触处的平移点的矢量大小。

请注意,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); } } } }