반응형

프로그래밍 정리/Unity 48

[Unity - 유니티] AddForce - rigidbody 컴포넌트에 힘을 가하는 함수

rigidbody.AddForce(transform.forward * speed); rigidbody 컴포넌트에 힘을 가하는 함수=> void AddForce(Vector3 force);=> void AddReleativeForce(Vector3 force); AddForce 함수의 인수에 Vecotr3.forward * speed를 하면월드좌표 기준으로 힘이 가해져 만약 y축이 회전하더라도항상 같은 월드 좌표의 Z축 방향으로 날아가게됨. 해당 게임오브젝트의 로컬 좌표를 기준으로 힘을 줄려면transform.forward * speed 또는 AddRelativeForce 함수를 사용.AddRelativeForce 함수는 로컬 좌표를 기준으로 Rigidbody에 힘을 주는 함수.

[Unity - 유니티] CrossFade - 애니메이션 변화를 부드럽게...

애니메이션이 변경될 때 급격히 바뀌면 어색한 동작이 연출될 수 있음.CrossFade 블렌딩 함수를 통해 부드럽게 애니메이션의 변화가 이뤄질수 있게 해줌. CrossFade 함수는 두 가지 인수가 있음.첫 번째 인수는 변경할 애니메이션 클립의 명칭.두 번째 인수는 다른 애니메이션 클립으로 FadeOut되는 시간. ex)Animation anim; _animation.CrossFade(anim.runForward.name, 0.3f);_animation.CrossFade(anim.runBackground.name, 0.3f);_animation.CrossFade(anim.runRight.name, 0.3f);...

[Unity - 유니티] 따라다니는 카메라

// 유니티는 게임오브젝트의 회전을 쿼터니언(Quaternion)타입으로 처리.// Quaternion.Euler는 오일러 각을 쿼터니언 타입으로 변경시주는 함수.Quaternion rot = Quaternion.Euler(0, currYAngle, 0); // dist : 타겟과의 거리// height : 카메라의 높이 위치tr.position = target.position - (rot * Vector3.forward * dist) + (Vector3.up * height); // 카메라가 타겟 게임오브젝트를 바라보게 설정tr.LookAt(target);

[Unity - 유니티] 전후좌우 이동방향 계산 및 이동

float h = 0.0f;float v = 0.0f; Transform thisTr; float Speed = 15.0f; void Start(){thisTr = GameObject.GetComponent();} void Update(){h = Input.GetAxis("Horizontal");v = Input.GetAxis("Vertical"); Vector3 moveDirection = (Vector3.forwad * v) + (Vector3.right * h); thisTr.Translate(moveDirection * Time.deltaTime * Speed, Space.Self);} ※ Space.Self = 로컬 좌표계 Space.World = 월드 좌표계

[Unity - 유니티] 정규화 벡터 (Normalized Vector)

크기와 방향을 가진 데이터형을 벡터라 함.각 축의 크기가 1인 벡터를 단위벡터, 즉 정규화된 벡터(Normalized Vector)라 함.방향만을 표시한 벡터라고 생각하면 됨. 유니티에서 제공하는 Vector3구조체에 ShortcutVector3.forward = Vector3(0, 0, 1)Vector3.back = Vector3(0, 0, -1)Vector3.left = Vector3(-1, 0, 0)Vector3.right = Vector3(1, 0, 0)Vecotr3.up = Vector3(0, 1, 0)Vector3.down = Vector3(0, -1, 0)Vector3.one = Vector3(1, 1, 1)Vector3.zero = Vector3(0, 0, 0)

[Unity - 유니티] Unity Angle 등 관련함수

transform.rotation => 모든각을 최대 1로 봄. transform.eulerAngles => 360 기준으로 각을 계산. Time.time => 게임 시작후 경과된 총시간 TIme.deltatime => 마지막 업데이트 후 시간 Mathf.Lerp(현재값, 대상값, 뽑아낼 퍼센트값(0~1)) => 일반 러프 함수와 동일함 Mathf.LerpAngle(현재값, 대상값, 뽑아낼 퍼센트값(0~1)) => 대상값을 360단위 각으로 계산하여 그이상이 되어도 필요한 각도만 나온다 lerp의 인자 수정해도 동일한 값 나옴=> Mathf.LerpAngle(MinAngle, MaxAngle, Time.time)

[Unity - 유니티] Physics.Raycast / 레이어

Physics.Raycast 파라미터=> Vector3 빛의 발사위치, Vector3 빛의 방향, float 빛의 길이, int 빛이 닿은 레이어의 비트마스크 레이어는 0~7까지 기본 내장.8이상부터 개발자가 직접 정의. Raycast함수로 지정하는 레이어 번호는 내부적으로 비트연산.예를들어 8번 레이어라면 이진수로 100000000 이라는 값을 전달해야 하므로변수의 정의로 1

반응형