반응형
직선을 나누는 방법은 간단하다.
아래와 같이 두 점과 몇 개로 나눌지 입력받은 함수를 나눈 뒤, 두 점을 빼고 N등분 한 후 하나씩 더해주면 된다.
List<Vector3> getDivideLinePoint(Vector3 a, Vector3 b, int n)
{
Vector3 divide = (b - a) / n;
List<Vector3> points = new List<Vector3>();
for(int i = 1; i < n; i++) points.Add(a + divide * i);
return points;
}
두 점은 public으로 선언해서 Inspector에서 받도록 하자.
여기서는 임의의 큐브를 생성해서 배치하였다.
N등분하는 점들의 좌표를 눈으로 보기 쉽도록 CreatePrimitive를 이용하자.
List<Vector3> points = getDivideLinePoint(p1.position, p2.position, 5);
foreach(Vector3 v in points)
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere);
go.transform.position = v;
}
게임을 실행하면 큐브가 만드는 직선을 5등분하는 4개의 sphere가 만들어진다.
전체 코드는 다음과 같다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DivideLine : MonoBehaviour
{
public Transform p1, p2;
List<Vector3> getDivideLinePoint(Vector3 a, Vector3 b, int n)
{
Vector3 divide = (b - a) / n;
List<Vector3> points = new List<Vector3>();
for(int i = 1; i < n; i++) points.Add(a + divide * i);
return points;
}
void Start()
{
List<Vector3> points = getDivideLinePoint(p1.position, p2.position, 5);
foreach(Vector3 v in points)
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere);
go.transform.position = v;
}
}
}
위의 실행결과는 아래의 unitypackage에서 확인 가능하다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
댓글