从射线原点到撞击点的距离。
对于射线,该距离表示从射线原点到撞击点的矢量大小。
对于扫描的体积或球体投射,该距离表示从原点到体积与其他碰撞体接触处的平移点的矢量大小。
请注意,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);
}
}
}
}