[SphereCast ] : 광선을 따라 구를 캐스팅하고 무엇이 맞았는지에 대한 자세한 정보를 반환합니다.
public static bool SphereCast(Vector3 origin, float radius, Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteractionqueryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
Parameters
origin The center of the sphere at the start of the sweep. radius The radius of the sphere. direction The direction into which to sweep the sphere. hitInfo If true is returned, hitInfo
will contain more information about where the collider was hit. (See Also: RaycastHit). maxDistance The max length of the cast. layerMask A Layer mask that is used to selectively ignore colliders when casting a capsule. queryTriggerInteraction Specifies whether this query should hit Triggers.
origin | The center of the sphere at the start of the sweep. |
radius | The radius of the sphere. |
direction | The direction into which to sweep the sphere. |
hitInfo | If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). |
maxDistance | The max length of the cast. |
layerMask | A Layer mask that is used to selectively ignore colliders when casting a capsule. |
queryTriggerInteraction | Specifies whether this query should hit Triggers. |
설명
구체를 씬 상의 모든 충돌체를 대상으로 발사하여 충돌한 것에 대한 자세한 정보를 반환합니다.
Raycast가 충분한 정밀도를 제공하지 않아 캐릭터와 같이 이동하는 길에 아무것도 충돌하지 않는 물체의 특정 크기를 알아내야 할때 이 함수가 유용할 수 있습니다. Sphere cast를 두꺼운 raycast라고 생각하십시오.
선 대신 구를 던져서 캐스팅
"스윕" 설명
( 스윕 교차) : 어떤 물체를 치고 지나갈때 멈추게함을 말함 (https://www.unrealengine.com/ko/blog/moving-physical-objects)
[OverlapSphere]
지정한 위치로 부터 지정한 범위안에 접촉한 콜라이더 배열로 반환 (접촉 또는 범위안의 것들)
public static Collider[] OverlapSphere(Vector3 position, float radius, int layerMask = AllLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
layerMask는 레이 캐스팅 시에 콜라이더를 선택적으로 무시하는데 사용
[사용]
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void ExplosionDamage(Vector3 center, float radius) { Collider[] hitColliders = Physics.OverlapSphere(center, radius); int i = 0; while (i < hitColliders.Length) { hitColliders[i].SendMessage("AddDamage"); i++; } } }
Physics.OverlapSphere()
ex) Collider[] cols = Physics.OverlapSphere(tr.position(원점), 10.0f(반경));
반경내에 들어와 있는 GameObject를 검출
GameObject는 Collider컴포넌트가 추가돼 있어야 함.
반환값은 Collider 배열 형태로 반환.
http://sharkmino.tistory.com/1437
http://sellingout.blog.me/221033922714
https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html
'게임엔진(GameEngine) > Unity3D' 카테고리의 다른 글
ScriptableObject [시리얼라이즈] (0) | 2017.10.03 |
---|---|
HideInInspector, SerializeField, FormerlySerializedAs , RequireComponent (0) | 2017.10.03 |
강체(Rigidbody) 의 연속 충돌 감지(Continuous Collision Detection) (0) | 2017.09.26 |
Destroy(this) 와 Destroy(gameObject) (0) | 2017.09.22 |
Unity JIT Spike (JIT 강제로 컴파일 하기) (0) | 2017.09.17 |