728x90
반응형
유니티 에디터(Unity Editor)에서 메쉬(Mesh)에 있는 클라이더(Collider)는 메쉬가 있기 때문에 따로 클라이더의 모양이 바로 확인 됩니다.
메쉬가 없이 클라이더만 있을 경우, 에이터에서 그 게임 오브젝트를 선택해야만 클라이더가 보입니다.
유니티 에디터에서 작업 중에도 클라이더를 계속 보여야 작업하는데 효율적입니다.
그래서 OnDrawGizmos를 이용하여 작업 중에도 계속 보이게 하는 코드입니다.
1 SphereCollider 그리기
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(SphereCollider))]
public class DrawSphereCollider : MonoBehaviour
{
public Color m_BodyColor = new Color(1, 0, 0, 0.5f);
public Color m_LineColor = Color.white;
private SphereCollider m_SphereCollider;
void Start()
{
m_SphereCollider = GetComponent<SphereCollider>();
}
void OnDrawGizmos()
{
float radius = m_SphereCollider.radius;
Vector3 position = m_SphereCollider.center - transform.position;
Gizmos.matrix
= Matrix4x4.TRS(this.transform.TransformPoint(transform.position),
this.transform.rotation, this.transform.lossyScale);
Gizmos.color = m_BodyColor;
Gizmos.DrawSphere(position, radius);
Gizmos.color = m_LineColor;
Gizmos.DrawWireSphere(position, radius);
}
}
2 BoxCollider 그리기
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(BoxCollider))]
public class DrawBoxCollider : MonoBehaviour
{
public Color m_BodyColor = new Color(0, 0, 1, 0.5f);
public Color m_LineColor = Color.white;
private BoxCollider m_BoxCollider;
void Start()
{
m_BoxCollider = GetComponent<BoxCollider>();
}
void OnDrawGizmos()
{
Vector3 size = m_BoxCollider.size;
Vector3 position = m_BoxCollider.center - transform.position;
Gizmos.matrix
= Matrix4x4.TRS(this.transform.TransformPoint(transform.position),
this.transform.rotation, this.transform.lossyScale);
Gizmos.color = m_BodyColor;
Gizmos.DrawCube(position, size);
Gizmos.color = m_LineColor;
Gizmos.DrawWireCube(position, size);
}
}
728x90
반응형
'프로그램 > 유니티 스크립트 소스' 카테고리의 다른 글
[유니티 스크립트 소스] 오토(Auto) 카메라 (0) | 2020.02.19 |
---|---|
[유니티 스크립트 소스] 마우스를 이용한 Orbit 카메라 (1) | 2020.02.19 |
[유니티 스크립트 소스] 리지드바디 없이 위치값으로 속도 얻기 (0) | 2020.02.18 |
[유니티 스크립트 소스] 타이머 - 카운트 다운 (1) | 2020.02.17 |
[유니티 스크립트 소스] 타이머 - 스톱 워치 (0) | 2020.02.17 |