코드네임 :

Vector Class 벡터 클래스 본문

프로그래밍/Unity(C#)

Vector Class 벡터 클래스

비엔 Vien 2023. 7. 3. 19:38

벡터의 방향 구하려면 (from 원점, to 시점) : 벡터의 뺄셈처럼 반대로 빼줌

AB = OB - OA  (위 벡터 화살표는 생략했)

 

.magnitude : 벡터의 크기 

 


Vector

 

✔️ 2D : Vector2 클래스 (float형의 x,y 멤버변수)

✔️ 3D : Vector3 클래스 (구조체 Struct) (float형의 x,y,z 멤버 변수)

 

struct Vector3
{
    public float x;
    public float y;
    public float z;
    
    // Vector용 멤버 메서드가 아래에 이어진다
}

 

 

✔︎ 둘 다 좌표나 벡터로 쓸 수 있음

✔︎ x = 3, y = 5를 좌표로 쓰면 오브젝트가 '(3,5)에 위치함'를 의미

✔︎ 벡터로 쓰면 '현재 위치에서 x 방향으로 3, y 방향으로 5 움직임'을 뜻함 

 

 

Vector 클래스 응용

✔︎ 가속도, 힘, 이동 속도 등의 물리 수치로 사용 가능

 


 

예제 #1 : Vector2 클래스의 멤버 변수에 숫자 대입하기

아니 그냥 벡터에서 쓰는 변수가 float실수형 변수 x,y,z니까 숫자는 정수로 써도 됨여 ( 정수값 실수변수에 대입시 자동으로 형변환) ‼️

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Test2 : MonoBehaviour
{
    private void Start()
    {
        Vector2 playerPos = new Vector2(3.0f, 4.0f);
        //Vector2 playerPos = new Vector2(3f, 4f);
        //Vector2 playerPos = new Vector2(3, 4); // 일케 얘는 f빼고 정수값으로 작성해도 됨.
                                                 // 정수 타입이 실수 타입보다 범위가 더 작으므로
                                                 //범위가 더 작은 타입을 범위가 더 넓은 타입에다 넣을때는 아무 문제가 없음
                                                  // 요 3,4의 정수값은 아래 실수변수(float형의 x, y)에다가 대입할 때
                                                   // 자동적으로 형변환이 된다
                                                    // - 암묵적 형변환
        playerPos.x += 8; // x축방향으로 8만큼
        playerPos.y += 5; // y축방향으로 5만큼
        //playerPos.x += 8.0f;
        //playerPos.y += 5.0f;
        //playerPos.x += (float)8;
        //playerPos.y += (float)5;

        Debug.Log(playerPos);
    }
}

/* 실행결과  (11.00, 9.00) */

 

 

 

 

예제 #2  : Vector 클래스끼리 뺄셈하기

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Test2 : MonoBehaviour
{
    private void Start()
    {
        Vector2 startPos = new Vector2(2.0f, 1.0f);
        Vector2 endPos = new Vector2(8.0f, 5.0f);

        Vector2 dir = endPos - startPos; // 뺄셈한 값을 dir(direction)에 대입
                      // end - start는 스타트에서 엔드로 가는 방향!!
                      // 반대인건 벡터의 뺄셈이랑 똑같뉴
        Debug.Log(dir);

        float len = dir.magnitude; // magnitude : 그 방향으로 이동한 "거리"구할 때 씀
                                   // 그냥.. "벡터의 크기"
        Debug.Log(len);
    }
}

/* 실행결과 */
// (6.00, 4.00)
// 7.211102

 

 

 


기하러지만 ^_^ 혹시라도 순간 까먹으면 아래 링크 보삼

https://m.blog.naver.com/os2dr/221576752200

 

[Unity3D] 벡터의 길이(크기)와 활용 / Vector3.magnitude

1. 벡터의 길이 (1) 벡터의 개념 벡터 : 크기와 방향을 갖는 물리량 스칼라 : 크기만을 갖는 물리량 벡터는...

blog.naver.com

https://m.blog.naver.com/lucifer246/194629349

 

원점을 시점으로 가지지 않는 벡터의 성분

  1. 원점을 시점으로 가지지 않는 벡터    의 벡터 가 시점을 으로 가지고 끝점을  ...

blog.naver.com

 


+ MS 설명,,

https://learn.microsoft.com/ko-kr/dotnet/api/system.windows.vector?view=windowsdesktop-7.0

 

Vector 구조체 (System.Windows)

2차원 공간의 변위를 나타냅니다.

learn.microsoft.com

 

'프로그래밍 > Unity(C#)' 카테고리의 다른 글

슈팅게임 - #2 총알이동, 적 이동  (0) 2023.07.06
슈팅게임 - #1 플레이어 이동  (0) 2023.07.04
Class 클래스⭐️  (0) 2023.07.03
오류코드 영어로 읽기  (0) 2023.07.03
method (사용자 정의 함수)  (0) 2023.07.03