무민은귀여워

[유니티] transform, Vector3 본문

IT/Unity

[유니티] transform, Vector3

moomini 2022. 5. 16. 23:25
반응형

1. transform 이동

transform.position 이용

transform.Translate 이용

wasd 키 입력으로 이동시키기

2. Vector3

Vector3 이해하기 위해 만든 MyVector

내 위치에서 목적지를 바라보는 벡터 구하기

1. transform 이동

transform.position 이용

* TransformDirection : 로컬 공간에서 월드 공간으로 변형 ( 역반향, InverseTransformDirection )

float _speed = 10.0f;
transform.position += transform.TransformDirection(Vector3.forward * Time.deltaTime * _speed);

transform.Translate 이용

float _speed = 10.0f;
transform.Translate(Vector3.forward * Time.deltaTime * _speed);

wasd 키 입력으로 이동시키기

if (Input.GetKey(KeyCode.W))
    transform.Translate(Vector3.forward * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.S))
    transform.Translate(Vector3.back * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.A))
    transform.Translate(Vector3.left * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.D))
    transform.Translate(Vector3.right * Time.deltaTime * _speed);

2. Vector3

Vector3 이해하기 위해 만든 MyVector

// 1. 위치 벡터
// 2. 방향 벡터
struct MyVector
{
    public float x;
    public float y;
    public float z;

    // 방향 벡터
    // 1. 거리(크기)    magnitude
    // 2. 실제 방향     normalized
    public float magnitude { get { return Mathf.Sqrt(x * x + y * y + z * z); } }
    public MyVector normalized { get { return new MyVector(x / magnitude, y / magnitude, z / magnitude); } }

    public MyVector(float x, float y, float z) { this.x = x; this.y = y; this.z = z; }

    public static MyVector operator +(MyVector a, MyVector b)
    {
        return new MyVector(a.x + b.x, a.y + b.y, a.z + b.z);
    }

    public static MyVector operator *(MyVector a, float d)
    {
        return new MyVector(a.x * d, a.y * d, a.z * d);
    }

    public static MyVector operator -(MyVector a, MyVector b)
    {
        return new MyVector(a.x - b.x, a.y - b.y, a.z - b.z);
    }
}

내 위치에서 목적지를 바라보는 벡터 구하기

MyVector to = new MyVector(10.0f, 0.0f, 0.0f);
MyVector from = new MyVector(5.0f, 0.0f, 0.0f);
MyVector dir = to - from; // (5.0f, 0.0f, 0.0f)

dir = dir.normalized; // (1.0f, 0.0f, 0.0f)

MyVector newPos = from + dir * _speed; // (15.0f, 0.0f, 0.0f)
반응형

'IT > Unity' 카테고리의 다른 글

[유니티] InputManager  (0) 2022.05.17
[유니티] 회전 rotation  (0) 2022.05.16
[유니티] 싱글톤 패턴  (0) 2022.05.16
유니티 git 연동 lfs 사용하기  (1) 2021.05.18
memo) 유니티 레이캐스트 RayCast, BoxCast, SphereCast 스크랩  (0) 2020.01.15
Comments