Unity에서 Transform을 이용하여 LocalPosition <-> Global position 벡터 크기를 변경하는 팁.
2015. 6. 4. 21:58ㆍ프로그래밍/Unity
반응형
SMALL
유니티 작업을 할때 이미 오브젝트의 트렌스폼에서 로컬 글로벌 포지션을 각각 따로 저장해두고 있기때문에
읽어올 때는 무리가 없지만,
로컬과 글로벌 좌표를 혼용하여 사용할때 임의의 벡터값만큼의 이동이나 스케일 변환등을 시도하려하면
의도치 않은 변화가 일어날 때가 있다.
로컬 좌표의 vector3( 0f, 30f, 0f) 만큼의 이동을 하려고 할때
글로벌 좌표의 포지션을 이용하고 있으면 계산을 할때 글로벌좌표로 변환해 주어야 한다.
1. 프로그램 전반에서 사용하는 소스에서 transform을 하나 임의로 만들어 둔다.
transform tempT;
2. transform 에 local이나 global 벡터값을 하나 대입한 뒤, 변환하고자 하는 값을 읽어다 쓰면
유니티 프로그램상에서 값을 저장할때 자동으로 변환된 값을 함께 저장하므로
계산할 필요가 없이 바로 읽어다 쓸 수 있다.
public Vector3 LocalToGlobalTransVector(Vector3 v)
{
//0기준으로 벡터 크기가 글로벌 크기로 얼마인지를 반환 ..
tempT.localPosition = v;
return tempT.position;
}
public Vector3 GlobalToLocalTransVector(Vector3 v)
{
//0기준으로 벡터 크기가 글로벌 크기로 얼마인지를 반환 ..
tempT.position = v;
return tempT.localPosition;
}
반응형
LIST
'프로그래밍 > Unity' 카테고리의 다른 글
GetComponentsInChildren<>() 자식오브젝트에서 활성/비활성 컴포넌트 찾기 (0) | 2015.07.10 |
---|---|
Audio Clip 이펙트음 설정 관련 주의사항 (0) | 2015.07.06 |
UITexture의 모양 변형하기 ( 둥근 라운드형 ) (4) | 2015.01.30 |
TypeLoadException (0) | 2014.07.29 |
SendMessage() (0) | 2014.07.09 |