Physics.CapsuleCastAll 所有胶囊投射

static function CapsuleCastAll (point1 : Vector3, point2 : Vector3, radius : float, direction : Vector3, distance : float = Mathf.Infinity, layermask : int = kDefaultRaycastLayers) : RaycastHit[]

Parameters参数

• point1
The start of the capsule.
胶囊的起点
• point2
The end of the capsule.
胶囊的结束点
胶囊的半径
• direction
The direction into which to sweep the capsule.
胶囊扫描的方向
• distance
The length of the sweep
扫描的长度
A Layer mask that is used to selectively ignore colliders when casting a capsule.
Returns

RaycastHit[] - an array of all colliders hit in the sweep.

Description描述

Like Physics.CapsuleCast, but this function will return all hits the capsule sweep intersects.

Physics.CapsuleCast 不同的是这个函数返回所有交互的碰撞体信息。

Casts a capsule against all colliders in the scene and returns detailed information on each collider which was hit. The capsule is defined by the two spheres with radius around point1 and point2, which form the two ends of the capsule. Hits are returned all colliders which would collide against this capsule if the capsule was moved along direction. This is useful when a Raycast does not give enough precision, because you want to find out if an object of a specific size, such as a character, will be able to move somewhere without colliding with anything on the way.

``````using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void Update() {
RaycastHit[] hits;
CharacterController charCtrl = GetComponent<CharacterController>();
Vector3 p1 = transform.position + charCtrl.center + Vector3.up * -charCtrl.height * 0.5F;
Vector3 p2 = p1 + Vector3.up * charCtrl.height;
hits = Physics.CapsuleCastAll(p1, p2, charCtrl.radius, transform.forward, 10);
int i = 0;
while (i < hits.Length) {
RaycastHit hit = hits[i];
System.Object renderer = hit.collider.renderer;
if (renderer) {
renderer.material.color.a = 0.3F;
}
i++;
}
}
}``````
``````function Update () {
var hits : RaycastHit[];
var charCtrl : CharacterController = GetComponent(CharacterController);
var p1 : Vector3 = transform.position + charCtrl.center +
Vector3.up * (-charCtrl.height*0.5);
var p2 : Vector3 = p1 + Vector3.up * charCtrl.height;
// Cast character controller shape 10 meters forward, to see if it is about to hit anything
//向前投射角色物体10米，是否与其他物体碰撞
hits = Physics.CapsuleCastAll (p1, p2, charCtrl.radius, transform.forward, 10);

// Change the material of all hit colliders
// to use a transparent Shader
//改变每一个碰撞体的着色器为透明
for (var i = 0;i < hits.Length;i++) {
var hit : RaycastHit = hits[i];
var renderer = hit.collider.renderer;
if (renderer) {