어제 미니맵을 그리기 위해 맵의 콜라이더를 참고해 선을 그리도록 하는 코드를 작성했으나 그려진 위치가 올바르게 나오지 않았고, 추가로 라인의 색상이 흰색이 아닌 마젠타로 적용되는 문제와 튀어나와있는 지형의 선이 뾰족하게 튀어나오는 문제가 있었다.
여기서 문제의 일부분을 해결한 과정을 남겨두려한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(LineRenderer))]
public class MiniMapRenderer : MonoBehaviour
{
private LineRenderer lineRenderer;
[SerializeField]
private PolygonCollider2D[] tutorialCollider;
// Start is called before the first frame update
void Start()
{
lineRenderer = GetComponent<LineRenderer>();
if (tutorialCollider != null && tutorialCollider.Length > 0)
{
UpdateLine();
}
}
private void UpdateLine()
{
int totalPoints = 0;
foreach(PolygonCollider2D colider in tutorialCollider)
{
totalPoints += colider.points.Length + 1;
}
Vector3[] linePosition = new Vector3[totalPoints];
int index = 0;
foreach(PolygonCollider2D collider in tutorialCollider)
{
Vector2[] points = collider.points;
for(int i = 0; i < points.Length; i++)
{
Vector3 worldPoint = collider.transform.TransformPoint(points[i]);
linePosition[index++] = worldPoint;
}
linePosition[index++] = collider.transform.TransformPoint(points[0]);
}
lineRenderer.positionCount = linePosition.Length;
lineRenderer.SetPositions(linePosition);
}
}
이번에는 위치를 해결하면서 동시에 여러개로 나뉘어 있는 맵의 콜라이더들을 배열에 담아 그리기로 했다.
스테이지는 여러개지만 일단 튜토리얼 스테이지를 참고해 선을 그리도록 하려고 튜토리얼을 담는 배열만 만들었다.
foreach문을 통해 콜라이더의 포인트 + 1(원점)을 담아주고, 해당 위치들을 새로운 배열에 담은 다음 TransformPoint를 사용해 위치를 재조정해줬다.
색상이 마젠타로 나오는 문제는 LineRenderer의 마테리얼이 문제였으며 해당 부분에 이미지를 넣으니 색상을 조절할 수 있게 되었다.
원하는 위치에 선들이 생성되었지만 일부분 지형이 이상하게 그려지는 문제가있다.
아마 콜라이더의 포인트 들이 문제이거나 원점으로 돌아오는 부분 둘 중하나가 문제가 있어 보였다.
이상하게 선이 그려지는 부분들은 좀 더 개선해야겠다.