반응형
유니티 버전 : 2020.3.25f1
작업환경 : Mac (Monterey 12.3.1)
메시렌더러의 사이즈를 구해서 큐브를 그려주는 스크립트 입니다.
아래 사이트를 참고하였습니다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=blessthy&logNo=221332575172
저는 에셋스토어의 무료 가구 에셋을 이용하여 확인해 봤습니다.
MeshArea.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MeshArea : MonoBehaviour
{
void OnDrawGizmosSelected()
{
Renderer rend = GetComponent<MeshRenderer>();
Vector3 center = rend.bounds.center;
Vector3 size = rend.bounds.size;
Gizmos.color = Color.red;
Gizmos.DrawCube(center, size);
}
}
위 스크립트를 컴포넌트 추가하시면 선택된 오브젝트의 크기에 맞게 큐브가 그려집니다.
어느정도 비슷하게 맞기는 하지만 메쉬 표면의 크기를 구하고 싶었습니다. 그래서 아래처럼 추가해서 작성 했습니다.
mesh의 vertices들의 외적을 이용하여 면적을 구하는 스크립트입니다.
MeshArea.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MeshArea : MonoBehaviour
{
void OnDrawGizmosSelected()
{
Renderer rend = GetComponent<MeshRenderer>();
Vector3 center = rend.bounds.center;
Vector3 size = rend.bounds.size;
Gizmos.color = Color.red;
//Gizmos.DrawCube(center, size);
MeshCollider mc = GetComponent<MeshCollider>();
Gizmos.DrawMesh(mc.sharedMesh,transform.position);
float result = 0;
Vector3[] vertices = mc.sharedMesh.vertices;
for (int p = vertices.Length - 1, q = 0; q < vertices.Length; p = q++)
{
result += (Vector3.Cross(vertices[q], vertices[p])).magnitude;
}
}
}
반응형
'유니티' 카테고리의 다른 글
ChatGPT 가라사대, 유니티 게임 엔진으로 게임 제작하기 (0) | 2023.03.03 |
---|---|
PCG 기술을 사용한 유니티 RPG 게임 개발 - 1장 도전 문제? (0) | 2022.05.18 |
Unity HexGrid (0) | 2022.05.16 |
유니티 동영상 재생 + Youtube(유료 에셋) (0) | 2022.04.21 |
유니티 PlanarReflection (0) | 2022.04.20 |