V = { 1, 2, 3 }

**덧셈**
V1 = [1, 2]
V2 = [2, 3]

V1 + V2 = [1 + 2, 2 + 3]

**뺄셈**
V1 - V2 = [1 - 2, 2 - 3]

A = [3, 5]
B = [2, -1]

A - B = A + (-B) = [3 + (-2), 5 + -(-1)] = [1, 6]
B - A = B + (-A) = [2 + (-3), -1 + -5] = [-1, -6]

**스칼라곱**
2 * V1 = [1 * 2, 2 * 2]
-3 * V1 = [1 * -3, 2 * -3]

**벡터의 크기(magnitude)**
sqrt(3^2 + 5^2+c^2)

**크기가 1인 벡터** => 방향 벡터(Directional Vector) => 정규화된 벡터(Nomalized Vector) 
크기를 1로 만드는 과정을 정규화(Normalize) => 단위 벡터(Unit Vector)
->V / |->V| = √a^2 + b^2

**내적(inner product / dot prouct)**
A = [1, 2]
B = [2, 3]
내적을 최적화에 사용할 수 있다. cos 보다 간단한 수학연산이다.
내적함수연산 : CPU 자원 소모를 적게 한다.
ex) 자동차 속도계에 활용 가능.
// var fwdSpeed = Vector3.Dot(rigidbody.velocity, transform.forward);

x = 두 벡터의 값
A * B = |A||B|cos(x)
A * B = cos(x)
A * B = 0 -> 두 벡터가 평행할 때

**외적(outer product / cross product)**

radian / degree

PI == 180도

법선벡터 : 어떤 평면에 대한 수직인 벡터

Vector3.back;
Vector3.down;
Vector3.forward;
Vector3.left;
Vector3.right;
Vector3.up;
Vector3.zero;
Vector3.one;

normalVector.magnitude; // 벡터의 크기
normalVector.normalized; // 정규화된 벡터
normalVector.sqrMagnitude; // 벡터의 크기²
normalVector.x;
normalVector.y;
normalVector.z;

// 이런식으로도 쓸 수 있다.
normalVector[0]; == normalVector.x;
normalVector[1]; == normalVector.y;
normalVector[2]; == normalVector.z;

Vector3.Angle(); // 두 벡터의 사이각
Vector3.Cross(); // Cross Product
Vector3.Dot();   // Dot Product
Vector3.Distance(); // 두 벡터 사이의 거리 == distanceVector.magnitude;
Vector3.Max();   // 두 벡터 중 큰 크기를 가지는 벡터
Vector3.Min();   // 두 벡터 중 작은 크기를 가지는 벡터
Vector3.Nomalize(); // 정규화 == vector.normalized;
Vector3.Project(); // 한 쪽으로 사영한 벡터를 얻는다.

Euler Test (Object Rotate test)

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

public class EulerTest : MonoBehaviour
{
    public float Speed;

    void Start()
    {

    }

    float X;
    float Y;
    void Update()
    {
        //밑에 이거는 90도만 감
        //Vector3 angles = transform.rotation.eulerAngles;
        //angles.x += Time.deltaTime * Speed;
        //transform.rotation = Quaternion.Euler(angles);

        X += Time.deltaTime * Speed;
        Y += Time.deltaTime * Speed / 2;
        transform.rotation = Quaternion.Euler(X,X,X);
    }
}

Product Test(Vector3.. X, Y, Z)

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

public class ProductTest : MonoBehaviour
{
    public Transform Target;

    void Update()
    {
        Vector3 distanceVector = Target.position - transform.position;

        Debug.Log(Vector3.Dot(transform.forward, distanceVector.normalized));

        Debug.DrawRay(transform.position, transform.forward * 5f, Color.blue);
        Debug.DrawRay(transform.position, distanceVector, Color.red);

        Vector3 nomalVector = Vector3.Cross(transform.forward * 10f, distanceVector.normalized);  
        Debug.DrawRay(transform.position, nomalVector, Color.green);
    }
}

Weird Turret Making_ How can?

Untitled

**골때리는 포탑 MAKING**

>> 보는 방향의 왼쪽 60도

>> 포탑은 회전하지 않음

>> 주황색 반경에 들어올 때만 쏘고, 나머지일땐 안쏜다.


https://github.com/shinshinjin/Weird_Turret