# Physics.CapsuleCast 胶囊投射

static function CapsuleCast (point1 : Vector3, point2 : Vector3, radius : float, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
static function CapsuleCast (point1 : Vector3, point2 : Vector3, radius : float, direction : Vector3, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool

### Parameters参数

• point1
The start of the capsule.
胶囊的起点
• point2
The end of the capsule.
胶囊的结束点
胶囊的半径
• direction
The direction into which to sweep the capsule.
胶囊扫描的方向
• hitInfo
如果交互到碰撞体，返回碰撞体的信息。
• distance
The length of the sweep
扫描的长度
A Layer mask that is used to selectively ignore colliders when casting a capsule.
Returns

bool - True when the capsule sweep intersects any collider, otherwise false.

Description描述

Casts a capsule against all colliders in the scene and returns detailed information on what 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 for the first collider 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 hit;
CharacterController charContr = GetComponent<CharacterController>();
Vector3 p1 = transform.position + charContr.center + Vector3.up * -charContr.height * 0.5F;
Vector3 p2 = p1 + Vector3.up * charContr.height;
if (Physics.CapsuleCast(p1, p2, charContr.radius, transform.forward, out hit, 10))
distanceToObstacle = hit.distance;

}
}``````
``````function Update () {
var hit : RaycastHit;
var charContr : CharacterController = GetComponent(CharacterController);
var p1 : Vector3 = transform.position + charContr.center +
Vector3.up * (-charContr.height*0.5);
var p2 : Vector3 = p1 + Vector3.up * charContr.height;
// Cast character controller shape 10 meters forward, to see if it is about to hit anything
//向前投射角色物体10米，是否与其他物体碰撞
if (Physics.CapsuleCast (p1, p2, charContr.radius, transform.forward, hit, 10)) {
distanceToObstacle = hit.distance;
}
}``````
Page last updated: 2011-4-9