Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Github DeskTop Merge
- nav거리
- m585
- 오브젝트 깜빡임
- 유니티 머지
- unity git
- m590 수리
- networkobject.networkid
- unity merge
- navigation
- nav오브젝트사이거리
- M590
- Unity
- NavMesh
- 유니티 해상도 변경
- githubdesktopmerge
- 유니티
- m585 수리
- 몬스터
- 깃허브 데스크탑 병합
- 유니티 해상도
- stateauthority
- 깃허브 데스크탑 합치기
- 유니티 합치기
- unity 병합
- networkbehaviourid
- networkobject
- 유니티 브랜치 merge
- 유니티 해상도 설정
Archives
- Today
- Total
집게사장의 꿈
[Unity] 유니티 카메라 안에 오브젝트 판단 GetDistanceToPoint 본문
Plane.GetDistanceToPoint
평면과 점의 최단 거리를 구한다.
* Plane의 Nomal로부터의 점과 최단 거리를 도출
* 부호가 있는 값을 도출, 해당 Plane의 법선 방향에 있는 오브젝트는 +, 그렇지 않은 오브젝트는 -를 반환
코드
//노말과 거리 값을 저장 구조
Plane[] plane =null;
void Start()
{
//카메라의 각 절두체를 얻어옵니다.
plane = GeometryUtility.CalculateFrustumPlanes(Camera.main);
}
private void OnDrawGizmos()
{
//값이 존재할 경우
if(plane !=null && plane.Length > 0)
{
Gizmos.color = Color.red;
Debug.Log(plane.Length);
for(int i = 0 ; i < plane.Length; i++)
{
Gizmos.DrawRay(transform.position,plane[i].normal * 3.0f);
}
}
}
View
- 카메라의 절두체의 평면 정보를 얻어와 평면 의 Normal 벡터와 Sphere 사이 거리 값을 곱해 화면 중앙에 표시한다.
코드
//노말과 거리 값을 저장 구조
Plane[] plane =null;
void Start()
{
//카메라의 각 절두체를 얻어옵니다.
plane = GeometryUtility.CalculateFrustumPlanes(Camera.main);
}
private void OnDrawGizmos()
{
//값이 존재할 경우
if(plane !=null && plane.Length > 0)
{
Gizmos.color = Color.red;
Debug.Log(plane.Length);
for(int i = 0 ; i < plane.Length; i++)
{
Gizmos.DrawRay(transform.position,plane[i].normal * 3.0f);
}
}
}
void Update()
{
for(int i = 0; i<plane.Length; i++)
{
if (plane[i].GetDistanceToPoint(go.transform.position) < 0f)
{
Debug.Log("문제가 생겼음");
//Start로 얻은 카메라의 절두체 정보값으로 그려줌
//만약 go오브젝트가 카메라 절두체 Normal에서 벗어났다면 파랑색으로 표시
Debug.DrawRay(transform.position, plane[i].normal *3.0f, Color.blue);
}
}
}
View1
[go 오브젝트 Sphere가 카메라 내부에 있는 경우]
View 2
[go 오브젝트 Sphere가 아래의 절두체 평면 바깥쪽이 있는 경우]
정리
- 해당 기능을 사용하여 만약 하나라도 카메라 절두체 평면 Normal과의 거리가 음수가 된다면
- .
- 오브젝트가 바깥쪽에 있다고 판단해서 Flase를 반환하면 된다.
'유니티' 카테고리의 다른 글
[Unity] 최적화 과정 [코드 포함] (1) | 2024.01.21 |
---|---|
[Unity]유니티 UI 최적화 (0) | 2023.11.25 |
유니티 단축키 (2) | 2023.11.25 |
[Unity] 유니티 해상도 설정 UI / 주사율 변경 (1) | 2023.11.25 |
[유니티]navMesh 오브젝트 사이 거리 / navigation 오브젝트 사이 거리 / nav 거리값 (0) | 2023.11.06 |