Physics.SphereCast 球体投射

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

Parameters参数

Returns

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

当胶囊物体投射时与碰撞体相交时,返回真。

Description描述

Casts a sphere against all colliders in the scene and returns detailed information on what was hit.

投射球型物体来判断是否与场景中物体交互,返回 Raycasthit 信息。

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. Think of the sphere cast like a thick raycast.

这可以用在光线投射无法满足要求时的情况下。例如要判断角色(有空间大小尺寸)是否和一个物体发生碰撞。

参见: Physics.SphereCastAll, Physics.CapsuleCast, Physics.Raycast, Rigidbody.SweepTest

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
	void Update() {
		RaycastHit hit;
		CharacterController charCtrl = GetComponent<CharacterController>();
		Vector3 p1 = transform.position + charCtrl.center + Vector3.up * -charCtrl.height * 0.5F;
		Vector3 p2 = p1 + Vector3.up * charCtrl.height;
		if (Physics.CapsuleCast(p1, p2, charCtrl.radius, transform.forward, out hit, 10))
			distanceToObstacle = hit.distance;

	}
}
function Update () {
	var hit : 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米,看它如果要撞上任何东西
	if (Physics.CapsuleCast (p1, p2, charCtrl.radius, transform.forward, hit, 10)) {
		distanceToObstacle = hit.distance;
	}
}

• static function SphereCast (ray : Ray, radius : float, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
• static function SphereCast (ray : Ray, radius : float, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool

Parameters参数

Returns

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

当胶囊物体投射时与碰撞体相交时,返回真。

Description描述

Casts a sphere against all colliders in the scene and returns detailed information on what was hit.

投射球型物体来判断是否与场景中物体交互,返回 Raycasthit 信息。

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. Think of the sphere cast like a thick raycast.

这可以用在光线投射无法满足要求时的情况下。例如要判断角色(有空间大小尺寸)是否和一个物体发生碰撞。

参见: Physics.SphereCastAll, Physics.CapsuleCast, Physics.Raycast, Rigidbody.SweepTest

最后修改:2011年4月9日 Saturday 12:26

本脚本参考基于Unity 3.4.1f5

英文部分版权属©Unity公司所有,中文部分© Unity圣典 版权所有,未经许可,严禁转载 。