|
||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
Physics.SphereCast
static function SphereCast (origin : Vector3, radius : float, direction : Vector3, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : boolParameters
Returnsbool - True when the capsule sweep intersects any collider, otherwise false. DescriptionCasts a sphere against all colliders in the scene and returns detailed information on what was hit. 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. See Also: Physics.SphereCastAll, Physics.CapsuleCast, Physics.Raycast, Rigidbody.SweepTest
JavaScripts
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 if (Physics.CapsuleCast (p1, p2, charCtrl.radius, transform.forward, hit, 10)) { distanceToObstacle = hit.distance; } }
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; } }
import UnityEngine
import System.Collections class example(MonoBehaviour): def Update(): hit as RaycastHit charCtrl as CharacterController = GetComponent[of CharacterController]() p1 as Vector3 = ((transform.position + charCtrl.center) + (Vector3.up * ((-charCtrl.height) * 0.5F))) p2 as Vector3 = (p1 + (Vector3.up * charCtrl.height)) 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) : boolstatic function SphereCast (ray : Ray, radius : float, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : boolParameters
Returnsbool - True when the capsule sweep intersects any collider, otherwise false. DescriptionCasts a sphere against all colliders in the scene and returns detailed information on what was hit. 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. See Also: Physics.SphereCastAll, Physics.CapsuleCast, Physics.Raycast, Rigidbody.SweepTest |
|
|||||||||||||||||||||||||||||||||||||||||||