Unity3D圣典3.3版本-中文版
文集大纲加载中……
本文档使用 MrDoc 发布
-
+
首页
Physics.CapsuleCastAll 所有胶囊投射
# [Physics](Physics.html).CapsuleCastAll 所有胶囊投射 static function *CapsuleCastAll* (*point1* : [Vector3](../Vector3/Vector3.html), *point2* : [Vector3](../Vector3/Vector3.html), *radius* : float,*direction* : [Vector3](../Vector3/Vector3.html), *distance* : float = [Mathf.Infinity,](../Mathf/Mathf.Infinity.html) *layermask* : int= kDefaultRaycastLayers) : RaycastHit[] ### Parameters**参数** * *point1* The start of the capsule. 胶囊的起点 * *point2* The end of the capsule. 胶囊的结束点 * *radius* The radius of the capsule. 胶囊的半径 * *direction* The direction into which to sweep the capsule. 胶囊扫描的方向 * *distance* The length of the sweep 扫描的长度 * *layerMask* A Layer mask that is used to selectively ignore colliders when casting a capsule. 根据 Layer mask 层的不同来忽略碰撞体。 *Returns* [RaycastHit](file:///E:/Program%20Files/Unity/Editor/Data/Documentation/Documentation/ScriptReference/RaycastHit.html)[] - an array of all colliders hit in the sweep. 返回交互碰撞体信息的数组。 *Description* 描述 Like [Physics.CapsuleCast](Physics.CapsuleCast.html), but this function will return all hits the capsule sweep intersects. 和 [Physics.CapsuleCast](Physics.CapsuleCast.html) 不同的是这个函数返回所有交互的碰撞体信息。 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. 做一个胶囊物体的投射,对于场景中的所有物体。返回每一个碰撞体的信息。胶囊物体的描述:point1 ,point2 为上下两个结束点,radius 为半径。对胶囊物体做投射时,如果和碰撞体碰撞,raycasthit 结构返回碰撞信息。这可以用在光线投射无法满足要求时的情况下。例如要判断角色(有空间大小尺寸)是否和一个物体发生碰撞。 参见: [Physics.SphereCast](Physics.SphereCast.html), [Physics.CapsuleCast](Physics.CapsuleCast.html), [Physics.Raycast](Physics.Raycast.html), [Rigidbody.SweepTest](../Rigidbody/Rigidbody.SweepTest.html) * [C#](#) * [JavaScript](#) ``` 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.shader = Shader.Find("Transparent/Diffuse"); 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) { renderer.material.shader = Shader.Find("Transparent/Diffuse"); renderer.material.color.a = 0.3; } } } ```
da
2022年5月23日 14:17
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码