본문 바로가기
개발/Unity

유니티 - 직선을 N등분 하기 (Dividing a Line)

by 피로물든딸기 2022. 11. 23.
반응형

Unity 전체 링크

 

직선을 나누는 방법은 간단하다.

아래와 같이 두 점과 몇 개로 나눌지 입력받은 함수를 나눈 뒤, 두 점을 빼고 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에서 확인 가능하다.

DivideLine.unitypackage
0.00MB

 

Unity Plus:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글