저번 개발일지때 베지어 곡선으로 지형을 만들었는데..
이렇게 만드니깐 문제점이
직접 만들어보기 전까지 지형이 어떻게 생겼을지 예측이 힘들었다!
앞으로 지형을 많이 만들어야 할텐데
이렇게는 힘들것 같아서
에디터 상에서 바로 베지어 곡선이 보이게 만들려고 한다
구현
저번에 베지어 곡선으로 지형만들때도 이 코드를 많이 참고했는데
이번에도 많이 참고해서 만들었다 ^~^
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(BezierMeshGenerator))]
public class BezierMeshEditor : Editor
{
private void OnSceneGUI()
{
BezierMeshGenerator bezierMeshGenerator = (BezierMeshGenerator)target;
bezierMeshGenerator.p1 = Handles.PositionHandle(bezierMeshGenerator.p1, Quaternion.identity);
bezierMeshGenerator.p2 = Handles.PositionHandle(bezierMeshGenerator.p2, Quaternion.identity);
bezierMeshGenerator.p3 = Handles.PositionHandle(bezierMeshGenerator.p3, Quaternion.identity);
bezierMeshGenerator.p4 = Handles.PositionHandle(bezierMeshGenerator.p4, Quaternion.identity);
int count = 30;
for(float i=0; i<count; i++)
{
float beforeIndex = i / count;
Vector3 beforePoint = bezierMeshGenerator.bezierGenerator.BezierPoint(
bezierMeshGenerator.p1, bezierMeshGenerator.p2, bezierMeshGenerator.p3, bezierMeshGenerator.p4, beforeIndex);
float afterIndex =( i+1) / count;
Vector3 afterPoint = bezierMeshGenerator.bezierGenerator.BezierPoint(
bezierMeshGenerator.p1, bezierMeshGenerator.p2, bezierMeshGenerator.p3, bezierMeshGenerator.p4, afterIndex);
Handles.DrawLine(beforePoint, afterPoint);
}
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
BezierMeshGenerator bezierMeshGenerator = (BezierMeshGenerator)target;
if (GUILayout.Button("MeshGenerate"))
{
bezierMeshGenerator.CreateBezierMesh();
}
}
}
'odyssey' 카테고리의 다른 글
#17 odyssey 개발일지 : 캐릭터 움직임 수정 (0) | 2023.07.31 |
---|---|
#16 odyssey 개발일지 : 캣멀롬 스플라인으로 지형 보간 (0) | 2023.07.29 |
#14 odyssey 개발일지 : 낮/밤 시스템 만들기 (0) | 2023.07.22 |
#13 : odyssey 개발일지 : 바다 셰이더 만들기 (0) | 2023.07.17 |
#12 odyssey 개발일지 : 셰이더 그래프로 지형 외각선 만들기 (0) | 2023.06.24 |