تابع Physics.SphereCast در یونیتی_برخورد ناحیه ی کره ای_سیستم بینایی ناحیه کره ای
gameover.blog.ir
نویسنده:بیسواد
شکل کلی:
public static bool SphereCast(Vector3 origin,
float radius,
Vector3 direction,
out RaycastHit hitInfo,
float maxDistance = Mathf.Infinity,
int layerMask = DefaultRaycastLayers,
QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
origin:مرکز کره در آغاز جارو کردن(اسکن)
radius:شعاع کره(محوطه ی جستجوی کروی)
direction:جهت جاور کردن (sweep ) کروی
hitInfo: اگر true باشد ، hitInfo اطلاعات بیشتری از نقطه ی برخورد را برگشت می دهد.(RaycastHit رو هم ببینید)
maxDistance:حداکثر طول cast(پرتاب اشعه برای بررسی برخورد با اجسام دیگر)
layerMask : یک Layer mask برای نادیده گرفتن کلایدرهای انتخابی وقتی از یک کپسول cast می کنند.
queryTriggerInteraction:تعیین جایی که این دستور (SphereCast) باید با Triggerها برخورد(hit) کند.(تریگر به کلایدرهای قابل عبور می گیم)
خروجی: true اگر برخوردی در ناحیه ی کره ای با هر کلایدری داشته باشیم، وگرنه false .
مثال :
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { CharacterController charCtrl;
void Start() { charCtrl = GetComponent<CharacterController>(); }
void Update() { RaycastHit hit;
Vector3 p1 = transform.position + charCtrl.center; float distanceToObstacle = 0;
// Cast a sphere wrapping character controller 10 meters forward // to see if it is about to hit anything. if (Physics.SphereCast(p1, charCtrl.height / 2, transform.forward, out hit, 10)) { distanceToObstacle = hit.distance; } } }