반응형
DrawSolidArc 는 Arc를 그리는 메서드임
참고 예제
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gooldare&logNo=221479323579
먼저 내가 증명하려고함 예제에서는 움직이는 피사체의 기준으로 드로우를 해주고 있다.
Handles.DrawSolidArc(transform.position, Vector3.up, transform.forward, angleRange/2, distance);
이 함수는 시작점, 노멀벡터, 그리는 시작벡터, 각도, 거리(원의 반지름)에 해당한다
한다고함
문제점
그리기 시작벡터가 계속 움직이는 물체의 앞으로 보고 있기 떄문에
내꺼는 고정된 하늘을 보게 하려고함
해결방법
처음 생성될때 Awake에서 바라보게 하는 위치를 변수로 저장해서 그곳 바라보게 함
public float angleRange = 45f;
public float distance = 5f;
public bool isCollision = false;
Color _blue = new Color(0f, 0f, 1f, 0.2f);
Color _red = new Color(1f, 0f, 0f, 0.2f);
Vector3 direction;
float dotValue = 0f;
public Vector3 thePosition;
public Vector3 InitUpVector;
public Vector3 InitfowardVector;
private void Awake()
{
this.InitUpVector = transform.up;
this.InitfowardVector = transform.forward;
}
void Update()
{
dotValue = Mathf.Cos(Mathf.Deg2Rad * (angleRange / 2));
direction = new Vector3(0, 10, 0);
if (direction.magnitude < distance)
{
if (Vector3.Dot(direction.normalized, transform.up) > dotValue) {
isCollision = true;
Debug.Log("큐브 위에 큐브 존재");
}
else
isCollision = false;
}
else
isCollision = false;
}
private void OnDrawGizmos()
{
Handles.color = isCollision ? _red : _blue;
Handles.DrawSolidArc(transform.position, InitfowardVector, InitUpVector, angleRange / 2, distance);
Handles.DrawSolidArc(transform.position, InitfowardVector, InitUpVector, -angleRange / 2, distance);
}
반응형
'Unity > 문제해결' 카테고리의 다른 글
URP에서 가끔식 씬에서는 나오고 게임 씬에서 안 나오는 이슈 (0) | 2022.07.25 |
---|---|
firebase GPGS 연동 관련 (0) | 2022.04.11 |
[unity wifi build and run]유니티 무선으로 빌드하기 (0) | 2021.12.17 |
Unity Built-in Shader 마스킹을 이용하여 두 가지 색 표현하기 (0) | 2021.09.24 |
Hololens2 유니티 내에 빌드 후 'RectMask2D' does not contain a definition for 'padding' 에러 (0) | 2021.09.13 |