유니티:컴포넌트 조작하기
편집하기 (부분)
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
=기타= ==transform== 트렌스폼 컴포넌트는 편의상 GetComponent를 사용할 필요 없이, <code>transform</code> 변수로 바로 불러올 수 있게 되어있다. transform은 재미난 속성들을 갖고 있다. {| class="wikitable" !함수 !기능 |- |transform.position(벡터3); |오브젝트의 위치를 지정할 수 있다.(절대좌표의 위치를 조정한다.) |- |transform.Translate(벡터3); |특정 벡터값만큼 위치값을 이동시키는 메서드가 준비되어 있다. 보통 transform.Translate(벡터3 * Time.deltaTime); 형식으로 사용한다. 이 메서드에 의한 이동은 전역공간이 아니라 지역공간을 기준으로 움직인다는 데에 유의해야 한다. 전역공간에서의 이동으로 고치고 싶다면 transform.Translate(벡터3, Space.World); 처럼 두번째 인자를 준다. |- |transform.Rotation(Quaternion.Euler(벡터3)); |오브젝트의 회전값을 지정한다.(절대좌표에 대하여) |- |transform.rotation(쿼터니온); |회전값을 넣을 땐 벡터3이 아닌, 쿼터니온(사원수)을 사용한다. 오일러 각을 사용할 때 발생하는 짐벌락 때문이다. 쿼터니온은 유니티에서 직접 생성할 수 없게 막아두었고, 이를 위한 메서드가 준비되어 있다.<syntaxhighlight lang="c#"> Quaternion rotation = Quaternion.Euler((0, 1, 2)); // 오일러각을 쿼터니온으로 만들고, 한 번에 회전시킨다. Vector 3 eulerAngle = rotation.eulerAngles; // 사원수를 오일러각으로 반환한다. </syntaxhighlight>회전은 기본적으로 행렬을 사용하기 때문에 회전에 회전을 더하려면 +가 아니라, *를 사용한다. |- |transform.Rotate(3벡터); |보통 rotationSpeed 값을 지정하여 Update함수에 transform.Rotate(0f, rotationSpeed * Time.deltaTime, 0f); 처럼 두면 프레임당 이동속도를 볼 수 있다.(혹은 벡터 자체에 Time.daltaTime을 걸든가.) *델타타임에 의한 회전은 연산 순서에 영향을 미치지 않으므로 인수로 벡터3을 사용한다. *Translate와 동일하게 기본적으로 지역공간을 기준으로 회전시킨다. 마찬가지로 2번째 인수로 Space.World를 넣어주면 된다. |- |transform.LookAt(트렌스폼); |다른 객체의 트렌스폼을 받아 해당 객체를 바라보게 한다. |- |transform.localPosition = 값 transform.localRotation = Quaternion.Euler(벡터3) |어떤 오브젝트가 자식 오브젝트일때, 지역좌표계를 조작해야 하는 상황이 있다. 그 좌표계는 local 속성을 만져 조작할 수 있다. |} ===방향=== 오브젝트의 방향을 손쉽게 알 수 있도록 다음의 변수들을 제공한다. 일반적으로 캐릭터의 이동을 구현할 땐 절대공간을 기준으로 하지 않고 카메라의 위치에 따라 달리 한다. 이를 구현할 때 이 변수를 사용한다. {| class="wikitable" !변수 !기능 |- |transform.forward |오브젝트의 앞을 가리키는 방향벡터 |- |transform.right |오브젝트의 오른쪽을 가리키는 방향벡터 |- |transform.up |오브젝트의 위를 가리키는 방향벡터 |} 나머지 방향들은 위 벡터에 '-1'을 곱해 사용한다. ==게임 오브젝트에 접근하기== 코드 내에서 gameObject라는 변수로 코드를 담고 있는 게임오브젝트에 접근이 가능하다. ===게임 오브젝트 활성화, 비활성화=== 다음과 같이 게임 오브젝트가 기본적으로 갖고 있는 메서드를 이용해 오브젝트 활성/비활성이 가능하다.<syntaxhighlight lang="c#"> public void End() { // public으로 해주면 외부에서 이 함수에 접근할 수 있다. gameObject.SetActive(false); // gameObject는 이 코드를 담고 있는 오브젝트를 의미한다. } </syntaxhighlight>Instantiate()나 Destroy()처럼 오브젝트를 실시간으로 생성하거나 파괴하는 작업은 메모리를 많이 요구한다. 이를 대신하여 처음에 오브젝트를 불러오고 활성, 비활성을 반복하는 방식이 일반적이다.
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보