차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
unity:input [2015/05/21 23:34] – 문서가 unity3d:input에서 unity:input(으)로 옮겨졌습니다 V_Lunity:input [2018/02/22 03:04] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +{{tag>유니티 unity}}
 ======입력 Input====== ======입력 Input======
  
 ======데스크톱 Desktop====== ======데스크톱 Desktop======
 +유니티는 키보드, 조이스틱과 게임패드 입력을 지원함.
  
 +:!: 키보드, 조이스틱, 게임패드 입력은 유니티의 데스크탑 버전에서만 작동.
  
-:!: 키보드, 조이스틱, 게임패드 입력은 유니티의 데스크탑 버전에서만 작동합니다. 
  
-유니티는 키보드, 조이스틱과 게임패드 입력을 지원합니다. 
  
-가상 축과 버튼은 입력 매니져 Input Manager 에서 만들수 있고 사용자는 키보드 입력을 화면 설정 대화창 screen configuration dialogue 에서 설정할 수 있습니다.+가상 축과 버튼은 [[unity:class-inputmanager|입력 매니져 Input Manager]] (**Edit->Project Settings->Input**)에서 만들수 있고 사용자는 키보드 입력을 화면 설정 대화창 screen configuration dialogue 에서 설정할 수 있다.
  
-{{:unity3d:InputSelector.png}} 
  
-사용자는 조이스틱, 게임패드, 키보드 그리고 마우스를 설정하고 그것들 모두를 하나의  간단한 스크립팅 인터페이스를 통해 접근할 수 있습니다. 
  
-크립트에서 모든 가상 축은 그들의 이름을 통해 접근하게 됩니다.+{{:unity3d:InputSelector.png}} 
 + 
 +사용자는 조이틱, 게임패드, 키보드 그리고 마우스를 설정하고 들 모두를 하나의  간단한 스크립팅 인터페스를 통해 접근할 수 있다.
  
-모든 프로젝트는 생성되었을 때 아래의 기본 입력 축 input axe 을 가집니:+스크립트에서 모든 가상 축은 그들의 이름을 통해 접근하게 된.
  
-  * //수평 Horizontal// and //수직 Vertical//은 w, a, s, d와 화살표 키로 연결 map 되어 있습니다. +모든 프젝트는 생성었을 때 아래의 기본 입력 축 input axe 을 가진:
-  * //발사 Fire1//, // 발사 Fire2//, // 발사 Fire3// 는 각각 Ctrl, Option (Alt), Command으로 연결어 있습니다. +
-  * //마우스 Mouse X// 와 //마우스 Mouse Y// 는 마우스 이동의 델타 delta 와 연결되어 있습니다. +
-  * //윈도우 셰이크 Window Shake X// 와//윈도우 셰이크 Window Shake Y// 는 윈도우 이동과 연결되어 있습니.+
  
 +  * //수평 Horizontal// and //수직 Vertical//은 w, a, s, d와 화살표 키로 연결 map 되어 있다.
 +  * //발사 Fire1//, // 발사 Fire2//, // 발사 Fire3// 는 각각 Ctrl, Option (Alt), Command으로 연결되어 있다.
 +  * //마우스 Mouse X// 와 //마우스 Mouse Y// 는 마우스 이동의 델타 delta 와 연결되어 있다.
 +  * //윈도우 셰이크 Window Shake X// 와//윈도우 셰이크 Window Shake Y// 는 윈도우 이동과 연결되어 있다.
  
 ====새로운 입력 축 추가하기 Adding new Input Axes==== ====새로운 입력 축 추가하기 Adding new Input Axes====
  
-새로운 입력 축을 추가하고 싶으면 **Edit->Project Settings->Input** 메뉴로 갑니다. 여기서 각 축의 설정도 바꿀수 있습니다.+새로운 입력 축을 추가하고 싶으면 **Edit->Project Settings->Input** 메뉴로 다. 여기서 각 축의 설정도 바꿀수 있다.
  
 {{:unity3d:InputAxis.png}} {{:unity3d:InputAxis.png}}
  
-사용자는 각각의 축을 조이스틱, 마우스, 또는 키보드 키들의 두개의 버튼들에 연결합니다. +사용자는 각각의 축을 조이스틱, 마우스, 또는 키보드 키들의 두개의 버튼들에 연결.
  
  
줄 43: 줄 44:
 |//Gravity// |아무 버튼도 누르지 않았을 때 축이 중립 neutral 으로 떨어지는 초당 단위 units per second 속도.| |//Gravity// |아무 버튼도 누르지 않았을 때 축이 중립 neutral 으로 떨어지는 초당 단위 units per second 속도.|
 |//Dead// |아날로그 데드존 dead zone 의 크기. 이 범위에 속하는 모든 아날로그 장치 값은 맵이 중립이 되게 만듭니다.| |//Dead// |아날로그 데드존 dead zone 의 크기. 이 범위에 속하는 모든 아날로그 장치 값은 맵이 중립이 되게 만듭니다.|
-|//Sensitivity// |축이 목표 값으로 가는 초당 단위 속도. 이것은 디지털 장치들에만 해당 됩니다. | +|//Sensitivity// |축이 목표 값으로 가는 초당 단위 속도. 이것은 디지털 장치들에만 해당 다. | 
-|//Snap// |활성화되면 반대 방향의 버튼을 눌렀을 때 이 축의 값이 0으로 리셋됩니다. | +|//Snap// |활성화되면 반대 방향의 버튼을 눌렀을 때 이 축의 값이 0으로 리셋다. | 
-|//Invert// |활성화되면 음 Negative 버튼들이 양 positive 값을 보내고 그 반대의 경우도 성립합니다. |+|//Invert// |활성화되면 음 Negative 버튼들이 양 positive 값을 보내고 그 반대의 경우도 성립. |
 |//Type// |이 축을 제어할 입력 종류. | |//Type// |이 축을 제어할 입력 종류. |
 |//Axis// |이 축을 제어할 연결 장치의 축. | |//Axis// |이 축을 제어할 연결 장치의 축. |
 |//Joy Num// |이 축을 제어할 연결된 조이스틱. | |//Joy Num// |이 축을 제어할 연결된 조이스틱. |
  
-입력의 더 나은 모양과 느낌을 위해서 위의 설정을 이용하세요. 이들은 모두 에디터에 풍선도움말 tooltips 로도 볼 수 있습니다. +입력의 더 나은 모양과 느낌을 위해서 위의 설정을 이용하. 이들은 모두 에디터에 풍선도움말 tooltips 로도 볼 수 있다.
  
 ====스크립트에서 입력 축 이용하기 Using Input Axes from Scripts==== ====스크립트에서 입력 축 이용하기 Using Input Axes from Scripts====
-사용자는 이런 스크립트를 통해 현재 상태를 아래와 같이 물을 query 수 있습니다:+사용자는 이런 스크립트를 통해 현재 상태를 아래와 같이 물을 query 수 있다:
  
 <file csharp>value = Input.GetAxis ("Horizontal"); </file> <file csharp>value = Input.GetAxis ("Horizontal"); </file>
  
-축은 -1부터 1까지의 값을 가집니다. 중립 위치는 0입니다. +축은 -1부터 1까지의 값을 가다. 중립 위치는 0다. 
-이것은 조이스틱과 키보드 입력의 경우입니다.+이것은 조이스틱과 키보드 입력의 경우다.
  
-그러나 마우스 델타 Mouse Delta 와 윈도우 셰이크 델타 Window Shake Delta 는 마지막 프레임동안 얼마나 마우스나 윈도우가 움직였는가 입니다. 즉 이것은 사용자가 마우스를 빨리 움직이면 그것이 1보다 크거나 -1보다 작을 수도 있다는 말입니다.+그러나 마우스 델타 Mouse Delta 와 윈도우 셰이크 델타 Window Shake Delta 는 마지막 프레임동안 얼마나 마우스나 윈도우가 움직였는가 다. 즉 이것은 사용자가 마우스를 빨리 움직이면 그것이 1보다 크거나 -1보다 작을 수도 있다는 말다.
  
-같은 이름으로 여러 개의 축을 만드는 것은 가능합니다. 입력 축 input axis 을 얻을 때는 가장 큰 절대값을 가진  축이 불려옵니다. 이것은 하나의 축 이름에 하나 이상의 입력 장치를 할당하는 것을 가능하게 합니다. 예를 들어, 키보드 입력을 위한 축 하나를 만들고 같은 이름으로 조이스틱 입력을 위한 축을 만듭니다. 만약 사용자가 조이스틱을 이용하면 입력은 조이스틱에서 올 것이고 그렇지 않으면 입력은 키보드에서 오게 될 것입니다. 이 방식을 통하여 사용자는 스크립트를 작성할 때 입력이 어디서 올 지 신경쓸 필요가 없게 됩니다.+같은 이름으로 여러 개의 축을 만드는 것은 가능. 입력 축 input axis 을 얻을 때는 가장 큰 절대값을 가진  축이 불려다. 이것은 하나의 축 이름에 하나 이상의 입력 장치를 할당하는 것을 가능하게 . 예를 들어, 키보드 입력을 위한 축 하나를 만들고 같은 이름으로 조이스틱 입력을 위한 축을 만듭니다. 만약 사용자가 조이스틱을 이용하면 입력은 조이스틱에서 올 것이고 그렇지 않으면 입력은 키보드에서 오게 될 것다. 이 방식을 통하여 사용자는 스크립트를 작성할 때 입력이 어디서 올 지 신경쓸 필요가 없게 다.
  
 ====버튼 이름 Button Names==== ====버튼 이름 Button Names====
  
-하나의 키를 어떤 축과 연결시키기 위해서는 키의 이름을 ''인스펙터 Inspector''에 //Positive Button// 또는 //Negative Button// 속성에 넣어야 합니다.+하나의 키를 어떤 축과 연결시키기 위해서는 키의 이름을 ''인스펙터 Inspector''에 //Positive Button// 또는 //Negative Button// 속성에 넣어야 .
  
 키의 이름은 아래의 관례를 따릅니다: 키의 이름은 아래의 관례를 따릅니다:
줄 81: 줄 81:
   * 기능 키: "f1", "f2", "f3", ...   * 기능 키: "f1", "f2", "f3", ...
  
-키들을 식별하기 위한 이름은 스크립팅 인터페이스에서나 인스펙터에서나 같습니다.+키들을 식별하기 위한 이름은 스크립팅 인터페이스에서나 인스펙터에서나 같다.
  
 <file csharp>value = Input.GetKey ("a"); </file> <file csharp>value = Input.GetKey ("a"); </file>
- 
  
 ======모바일 입력 Mobile Input====== ======모바일 입력 Mobile Input======
-유니티 iOS/안드로이드는 [[ScriptRef:Input.html|Input]]과 [[ScriptRef:iPhoneInput.html|iOS Input]] 스크립트 인터페이스를 통해 아이폰, 아이패드, 그리고 안드로이드 입력 시스템에 접근할 수 있게 해줍니다.+유니티 iOS/안드로이드는 [[ScriptRef:Input.html|Input]]과 [[ScriptRef:iPhoneInput.html|iOS Input]] 스크립트 인터페이스를 통해 아이폰, 아이패드, 그리고 안드로이드 입력 시스템에 접근할 수 있게 해다.
  
-[[ScriptRef:Input.html|Input]]은 멀티터치 스크린, 가속도계 accelerator 그리고 기기의 화면방향 device orientation 에 접근하게 해줍니다. +[[ScriptRef:Input.html|Input]]은 멀티터치 스크린, 가속도계 accelerator 그리고 기기의 화면방향 device orientation 에 접근하게 해다. 
-[[ScriptRef:iPhoneInput.html|iOS Input]] 는 지리적 위치 정보에 접근하게 해줍니다.  +[[ScriptRef:iPhoneInput.html|iOS Input]] 는 지리적 위치 정보에 접근하게 해다.
  
-모바일 장치에서 키보드로의 접근은 [[unity:MobileKeyboard#iOS|iOS keyboard]]를 통해 제공됩니다.+모바일 장치에서 키보드로의 접근은 [[unity:MobileKeyboard#iOS|iOS keyboard]]를 통해 제공다.
  
 =====멀티터치 스크린 Multi-Touch Screen===== =====멀티터치 스크린 Multi-Touch Screen=====
  
-아이폰과 아이팟 터치 장치는 다섯 손가락의 동시 터치를 감지할 수 있습니다. 사용자는 [[ScriptRef:Input-touches.html|Input.touches]] 속성 배열 property array 을 통해 마지막 프레임 동안 화면을 만진 각 손가락에 대한 상태를 가져올 수 있습니다. +아이폰과 아이팟 터치 장치는 다섯 손가락의 동시 터치를 감지할 수 있다. 사용자는 [[ScriptRef:Input-touches.html|Input.touches]] 속성 배열 property array 을 통해 마지막 프레임 동안 화면을 만진 각 손가락에 대한 상태를 가져올 수 있다.
- +
->>android<< +
-안드로이드 장치들은 한번에 얼마나 많은 손가락 터치를 감지할 지에 대한 일관된 제한 기준이 없습니다. 조금 오래된 장치에서는 두 손가락 터치, 조금 더 최신 장치에서는 다섯 손가락까지 이것은 장치마다 다 틀립니다.+
  
 +안드로이드 장치들은 한번에 얼마나 많은 손가락 터치를 감지할 지에 대한 일관된 제한 기준이 없다. 조금 오래된 장치에서는 두 손가락 터치, 조금 더 최신 장치에서는 다섯 손가락까지 이것은 장치마다 다 틀립니다.
  
-각 손가락 터치는 [[ScriptRef:Touch.html|Input.Touch]]의 데이타 구조로 표현됩니다:+각 손가락 터치는 [[ScriptRef:Touch.html|Input.Touch]]의 데이타 구조로 표현다:
 |PROPS |PROPS
 |//fingerId// |하나의 터치에 대한 특별 인덱스. |//fingerId// |하나의 터치에 대한 특별 인덱스.
줄 108: 줄 105:
 |//deltaPosition// |마지막 프레임 이후의 화면에서의 위치 변화. |//deltaPosition// |마지막 프레임 이후의 화면에서의 위치 변화.
 |//deltaTime// |마지막 상태 변화 이후로 지난 시간. |//deltaTime// |마지막 상태 변화 이후로 지난 시간.
-|//tapCount// |아이폰/아이패드 화면은 사용자의 빠른 손가락 탭을 구별할 수 있습니다. 이 카운터는 사용자가 손가락을 옆으로 이동하지 않고도 몇번이나 탭 했는지를 알려줍니다. 안드로이드 기기들은 탭 수를 세지 않기 때문에 이 값은 항상 1입니다. +|//tapCount// |아이폰/아이패드 화면은 사용자의 빠른 손가락 탭을 구별할 수 있다. 이 카운터는 사용자가 손가락을 옆으로 이동하지 않고도 몇번이나 탭 했는지를 알려다. 안드로이드 기기들은 탭 수를 세지 않기 때문에 이 값은 항상 1다. 
-|//phase// |터치상태, 일명 "페이즈 phase"를 설명합니다. 이것은 터치가 방금 시작되었나를, 사용자가 손가락을 움직였는가, 혹은 손가락을 떼었는가 등을 파악하도록 도와줍니다.+|//phase// |터치상태, 일명 "페이즈 phase"를 설명. 이것은 터치가 방금 시작되었나를, 사용자가 손가락을 움직였는가, 혹은 손가락을 떼었는가 등을 파악하도록 도와다.
 |END |END
  
-터치상태인 페이즈 Phase 는 아래 중 하나의 상태에 있게 됩니다:+터치상태인 페이즈 Phase 는 아래 중 하나의 상태에 있게 다:
 |//Began// |손가락이 방금 화면을 터치함. |//Began// |손가락이 방금 화면을 터치함.
 |//Moved// |손가락이 화면에서 움직임. |//Moved// |손가락이 화면에서 움직임.
 |//Stationary// |손가락이 화면을 터치하고 있지만 마지막 프레임동안 움직임이 없었음. |//Stationary// |손가락이 화면을 터치하고 있지만 마지막 프레임동안 움직임이 없었음.
-|//Ended// |손가락이 화면에서 들어올려짐. 이것은 터치의 마지막 페이즈 phase 입니다. +|//Ended// |손가락이 화면에서 들어올려짐. 이것은 터치의 마지막 페이즈 phase 다. 
-|//Canceled// |사용자가 장치를 얼굴에 가져다 대거나 한번에 다섯개 초과의 터치가 일어났을 때 시스템이 터치의 추적을 취소합니다. 이것도 터치의 마지막 페이즈 phase 입니다.+|//Canceled// |사용자가 장치를 얼굴에 가져다 대거나 한번에 다섯개 초과의 터치가 일어났을 때 시스템이 터치의 추적을 취소. 이것도 터치의 마지막 페이즈 phase 다.
  
-다음은 유저가 화면을 탭 할때마다 광선 ray 을 뿌리는 예제 스크립트입니다:+다음은 유저가 화면을 탭 할때마다 광선 ray 을 뿌리는 예제 스크립트다:
 <file csharp> <file csharp>
 var particle : GameObject; var particle : GameObject;
 function Update () { function Update () {
- for (var touch : Touch in Input.touches) { +    for (var touch : Touch in Input.touches) { 
- if (touch.phase == TouchPhase.Began) { +        if (touch.phase == TouchPhase.Began) { 
- //현재 터치 좌표에서 광선을 만듭니다. +            //현재 터치 좌표에서 광선을 만듭니다. 
- var ray = Camera.main.ScreenPointToRay (touch.position); +            var ray = Camera.main.ScreenPointToRay (touch.position); 
- if (Physics.Raycast (ray)) { +            if (Physics.Raycast (ray)) { 
- //히트시 파티클을 생성합니다+                //히트시 파티클을 생성. 
- Instantiate (particle, transform.position, transform.rotation); +                Instantiate (particle, transform.position, transform.rotation); 
- +            
- +        
- }+    }
 } }
 </file> </file>
  
 ====마우스 시뮬레이션 Mouse Simulation==== ====마우스 시뮬레이션 Mouse Simulation====
-본래의 터치 지원 이외에도 유니티 iOS/안드로이드는 마우스 시뮬레이션을 제공합니다. 사용자는 표준 [[ScriptRef:Input.html|Input]] 클래스에서 마우스 기능을 사용할 수 있습니다.+본래의 터치 지원 이외에도 유니티 iOS/안드로이드는 마우스 시뮬레이션을 제공. 사용자는 표준 [[ScriptRef:Input.html|Input]] 클래스에서 마우스 기능을 사용할 수 있다.
  
 =====장치 방향 Device Orientation===== =====장치 방향 Device Orientation=====
-유니티 iOS/안드로이드는 사용자가 3차원 공간에서 기기의 실제 물리적 방향의 분리된 정보를 얻는 것을 가능하게 합니다. 사용자가 어떻게 장치를 들고 있는가에 따라 게임의 행동 behaviors 이 반응하게 만들고 싶다면 방향 변화의 감지는 유용히 쓰일 수 있습니다.+유니티 iOS/안드로이드는 사용자가 3차원 공간에서 기기의 실제 물리적 방향의 분리된 정보를 얻는 것을 가능하게 . 사용자가 어떻게 장치를 들고 있는가에 따라 게임의 행동 behaviors 이 반응하게 만들고 싶다면 방향 변화의 감지는 유용히 쓰일 수 있다.
  
-사용자는  [[ScriptRef:Input-deviceOrientation.html|Input.deviceOrientation]] 속성에서 장치 방향에 대한 정보를 얻을 수 있습니다. 방향은 아래 중에 하나의 값을 가집니다: +사용자는  [[ScriptRef:Input-deviceOrientation.html|Input.deviceOrientation]] 속성에서 장치 방향에 대한 정보를 얻을 수 있다. 방향은 아래 중에 하나의 값을 가다: 
-|//Unknown// |장치 방향을 정할 수가 없습니다. 가령 장치가 대각선 방향으로 회전하고 있는 경우에 입니다.. +|//Unknown// |장치 방향을 정할 수가 없다. 가령 장치가 대각선 방향으로 회전하고 있는 경우에 다.. 
-|//Portrait// |장치가 똑바로 서있고 홈버튼이 바닥에 있는 세로 portrait 모드입니다. +|//Portrait// |장치가 똑바로 서있고 홈버튼이 바닥에 있는 세로 portrait 모드다. 
-|//PortraitUpsideDown// |장치가 세로 모드이지만 거꾸로 세워져 홈버튼이 꼭대기에 있습니다. +|//PortraitUpsideDown// |장치가 세로 모드이지만 거꾸로 세워져 홈버튼이 꼭대기에 있다. 
-|//LandscapeLeft// |장치가 가로 모드이고 세워져 있고 홈버튼이 오른쪽에 있습니다. +|//LandscapeLeft// |장치가 가로 모드이고 세워져 있고 홈버튼이 오른쪽에 있다. 
-|//LandscapeRight// |장치가 가로 모드이고 세워져 있고 홈버튼이 왼족에 있습니다. +|//LandscapeRight// |장치가 가로 모드이고 세워져 있고 홈버튼이 왼족에 있다. 
-|//FaceUp// |장치의 화면이 위 (하늘) 쪽을 향한 채로 지면과 평행으로 놓여 있습니다. +|//FaceUp// |장치의 화면이 위 (하늘) 쪽을 향한 채로 지면과 평행으로 놓여 있다. 
-|//FaceDown// |장치의 화면이 아래 (땅) 쪽을 향한 채로 지면과 평행으로 놓여 있습니다.+|//FaceDown// |장치의 화면이 아래 (땅) 쪽을 향한 채로 지면과 평행으로 놓여 있다.
  
 =====가속도계 Accelerometer===== =====가속도계 Accelerometer=====
-모바일 장치가 움직이면서 내장된 가속도계 accelerometer 는 3D 공간에서 일차적인 세 개의 축에 대한 선형 가속 변화 llinear acceleration changes 를 보고합니다. 각 축 방향으로의 가속은 G-force 값으로 하드웨어에 의해 직접 보고 되어집니다. 값 1.0은 주어진 축에서 +1g의 양을 나타내며 -1.0은 -1g를 나타냅니다. 만약 사용자가  장치를 정면으로 보고 똑바로 세워서 잡고 있으면 (홈버튼이 바닥에 위치) X축은 오른쪽으로 양수값이며 Y축은 위쪽으로 양수이며 Z축은 사용자 쪽으로 양수값을 가집니다.+모바일 장치가 움직이면서 내장된 가속도계 accelerometer 는 3D 공간에서 일차적인 세 개의 축에 대한 선형 가속 변화 llinear acceleration changes 를 보고. 각 축 방향으로의 가속은 G-force 값으로 하드웨어에 의해 직접 보고 되어다. 값 1.0은 주어진 축에서 +1g의 양을 나타내며 -1.0은 -1g를 나타냅니다. 만약 사용자가  장치를 정면으로 보고 똑바로 세워서 잡고 있으면 (홈버튼이 바닥에 위치) X축은 오른쪽으로 양수값이며 Y축은 위쪽으로 양수이며 Z축은 사용자 쪽으로 양수값을 가다.
  
-가속도계 값은 [[ScriptRef:Input-acceleration.html|Input.acceleration]] 속성에서 얻을 수 있습니다.+가속도계 값은 [[ScriptRef:Input-acceleration.html|Input.acceleration]] 속성에서 얻을 수 있다.
  
-아래는 가속도계를 이용해서 객체를 움직이는 예제 스크립트입니다:+아래는 가속도계를 이용해서 객체를 움직이는 예제 스크립트다:
 <file csharp> <file csharp>
 var speed = 10.0; var speed = 10.0;
 function Update () { function Update () {
- var dir : Vector3 = Vector3.zero;+    var dir : Vector3 = Vector3.zero;
  
- // 장치가 지면과 평행하게 놓여있다고 가정합니다 +    // 장치가 지면과 평행하게 놓여있다고 가정 
- // 홈 버튼이 오른손 쪽에 위치해 있습니+    // 홈 버튼이 오른손 쪽에 위치해 있다
  
- // 장치 가속도 축을 게임 좌표에 재적용합니다+    // 장치 가속도 축을 게임 좌표에 재적용: 
- //  1) 장치의 XY 평면이 XZ평면에 적용됩니다 +    //  1) 장치의 XY 평면이 XZ평면에 적용다 
- //  2) Y축을 따라 90도 회전 되었습니다. +    //  2) Y축을 따라 90도 회전 되었다. 
- dir.x = -Input.acceleration.y; +    dir.x = -Input.acceleration.y; 
- dir.z = Input.acceleration.x;+    dir.z = Input.acceleration.x;
  
- // 가속 벡터를 단위 구 unit sphere 에 고정. +    // 가속 벡터를 단위 구 unit sphere 에 고정. 
- if (dir.sqrMagnitude > 1) +    if (dir.sqrMagnitude > 1) 
- dir.Normalize();+        dir.Normalize();
  
- //이것을 프레임당 10미터 대신 초당 10미터로 이동하게 만듭니다. +    //이것을 프레임당 10미터 대신 초당 10미터로 이동하게 만듭니다. 
- dir *= Time.deltaTime;+    dir *= Time.deltaTime;
  
- //객체를 이동합니다+    //객체를 이동. 
- transform.Translate (dir * speed);+    transform.Translate (dir * speed);
 } }
 </file> </file>
  
 ====로우-패스 필터 Low-Pass Filter==== ====로우-패스 필터 Low-Pass Filter====
-가속도계를 읽는 것은 불규칙한 곳들과 노이즈가 많습니다. 로우-패스 필터 Low-pass filter 를 신호 signal 에 적용시키는 것은 사용자가 그것을 완화시키고 고주파 노이즈를 제거하게 해줍니다.+가속도계를 읽는 것은 불규칙한 곳들과 노이즈가 많다. 로우-패스 필터 Low-pass filter 를 신호 signal 에 적용시키는 것은 사용자가 그것을 완화시키고 고주파 노이즈를 제거하게 해다.
  
-아래의 스크립트는 사용자가 어떻게 로우-패스 필터를 가속도계 읽기에 적용시키는지 보여줍니다:+아래의 스크립트는 사용자가 어떻게 로우-패스 필터를 가속도계 읽기에 적용시키는지 보여다:
 <file csharp> <file csharp>
 var AccelerometerUpdateInterval : float = 1.0 / 60.0; var AccelerometerUpdateInterval : float = 1.0 / 60.0;
줄 194: 줄 191:
 private var lowPassValue : Vector3 = Vector3.zero; private var lowPassValue : Vector3 = Vector3.zero;
 function Start () { function Start () {
- lowPassValue = Input.acceleration;+    lowPassValue = Input.acceleration;
 } }
  
 function LowPassFilterAccelerometer() : Vector3 { function LowPassFilterAccelerometer() : Vector3 {
- lowPassValue = Mathf.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor); +    lowPassValue = Mathf.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor); 
- return lowPassValue;+    return lowPassValue;
 } }
 </file> </file>
  
-''LowPassKernelWidthInSeconds'' 의 값이 클수록 필터된 값이 현재 입력 샘플 input sample 에 모이는 것이 느려지게 될 것입니다 (반대의 경우도 마찬가지). 사용자는 ''avgSamples()'' 대신 ''LowPassFilter()'' 함수를 사용할 수 있습니다.+''LowPassKernelWidthInSeconds'' 의 값이 클수록 필터된 값이 현재 입력 샘플 input sample 에 모이는 것이 느려지게 될 것다 (반대의 경우도 마찬가지). 사용자는 ''avgSamples()'' 대신 ''LowPassFilter()'' 함수를 사용할 수 있다.
  
-====가속도계를 읽을 때 가장 정밀한 값을 원합니어떻게 해야 하나요?==== +====가속도계를 읽을 때 가장 정밀한 값을 원면 어떻게 해야 하나요?====
-[[ScriptRef:Input-acceleration.html|Input.acceleration]] 변수를 읽는 것은 하드웨어를 샘플링하는 것과 같은 것이 아닙니다. 간단히 말하면 유니티는 하드웨어를 60Hz의 빈도로 샘플을 모으며 그 결과를 해당 변수에 저장합니다. 현실적으로는 이것은 조금 더 복잡합니다. 만약 CPU에 부담이 굉장히 많은 상황이 되면 가속도계의 샘플링은 일정한 시간 간격으로 일어나지 않습니다. 그 결과 시스템은 한 프레임에선 2개의 샘플을 보고하기도 하고 다음 프레임에선 1개의 샘플을 보고하기도 합니다.+
  
-프레임에서 가속도계가 그 프레임에서 실행한 모든 측정 정보에 접근할 수 있습니다. 아래의 코드는 마지막 프레임안에서 수집된 모든 가속도계 이벤트의 간단한 평균을 보여줄 것입니다:+ 
 +[[ScriptRef:Input-acceleration.html|Input.acceleration]] 변수를 읽는 것은 하드웨어를 샘플링하는 것과 같은 것이 아니다. 간단히 말하면 유니티는 하드웨어를 60Hz의 빈도로 샘플을 모으며 그 결과를 해당 변수에 저장. 현실적으로는 이것은 조금 더 복잡. 만약 CPU에 부담이 굉장히 많은 상황이 되면 가속도계의 샘플링은 일정한 시간 간격으로 일어나지 않는다. 그 결과 시스템은 한 프레임에선 2개의 샘플을 보고하기도 하고 다음 프레임에선 1개의 샘플을 보고하기도 . 
 + 
 +프레임에서 가속도계가 그 프레임에서 실행한 모든 측정 정보에 접근할 수 있다. 아래의 코드는 마지막 프레임안에서 수집된 모든 가속도계 이벤트의 간단한 평균을 보여줄 것다:
  
 <file csharp> <file csharp>
줄 214: 줄 213:
 var acc : Vector3 = Vector3.zero; var acc : Vector3 = Vector3.zero;
 for (var evnt : iPhoneAccelerationEvent  in iPhoneInput.accelerationEvents) { for (var evnt : iPhoneAccelerationEvent  in iPhoneInput.accelerationEvents) {
- acc += evnt.acceleration * evnt.deltaTime; +    acc += evnt.acceleration * evnt.deltaTime; 
- period += evnt.deltaTime;+    period += evnt.deltaTime;
 } }
 if (period > 0) if (period > 0)
- acc *= 1.0/period;+    acc *= 1.0/period;
 return acc; return acc;
 </file> </file>
줄 224: 줄 223:
 =====추가 읽기 Further Reading===== =====추가 읽기 Further Reading=====
  
-유니티 모바일 입력 API는 원래 애플의 API에 기반을 둡니다. 유니티의 입력 API를 더 잘 이해하기 위해서는 원래 API를 배우면 도움이 될 것입니다. 아래에서 애플 입력 API문서를 찾을 수 있습니다:+유니티 모바일 입력 API는 원래 애플의 API에 기반을 둡니다. 유니티의 입력 API를 더 잘 이해하기 위해서는 원래 API를 배우면 도움이 될 것다. 아래에서 애플 입력 API문서를 찾을 수 있다:
 *[[file:///Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone2_0.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/EventHandling/chapter_8_section_1.html|Programming Guide: Event Handling (애플 아이폰 SDK 문서)]] *[[file:///Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone2_0.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/EventHandling/chapter_8_section_1.html|Programming Guide: Event Handling (애플 아이폰 SDK 문서)]]
 *[[file:///Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone2_0.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/UIKit/Reference/UITouch_Class/Reference/Reference.html|UITouch Class Reference (애플 iOS SDK 문서)]] *[[file:///Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone2_0.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/UIKit/Reference/UITouch_Class/Reference/Reference.html|UITouch Class Reference (애플 iOS SDK 문서)]]
  
-_주의:_ 위 링크들은 사용자의 로컬 설치된 아이폰 SDK 참조 문서 iPhone SDK Reference Documentation 를 참조하고 본래 ObjectiveC 코드를 포함하고 있을 것입니다. 유니티를 모바일 장치에서 사용하기 위해 꼭 위의 문서들을 이해할 필요는 없으나 도움이 되는 분들이 있을 것입니다!+_주의:_ 위 링크들은 사용자의 로컬 설치된 아이폰 SDK 참조 문서 iPhone SDK Reference Documentation 를 참조하고 본래 ObjectiveC 코드를 포함하고 있을 것다. 유니티를 모바일 장치에서 사용하기 위해 꼭 위의 문서들을 이해할 필요는 없으나 도움이 되는 분들이 있을 것다!
  
 ======iOS!====== ======iOS!======
 [[#iPhoneInput]] [[#iPhoneInput]]
->>ios<< 
  
 =====장치의 지리적 위치 Device geographical location===== =====장치의 지리적 위치 Device geographical location=====
-장치의 지리적 위치는 [[ScriptRef:iPhoneInput-lastLocation.html|iPhoneInput.lastLocation]] 속성을 통해 얻을 수 있습니다. 사용자는 이 속성을 호출하기 전에 [[ScriptRef:iPhoneSettings.StartLocationServiceUpdates.html|iPhoneSettings.StartLocationServiceUpdates()]]를 이용해서 위치 서비스 업데이트를 시작하고 [[ScriptRef:iPhoneSettings-locationServiceStatus.html|iPhoneSettings.locationServiceStatus]]를 통해 서비스 상태를 확인해야 할 것입니다. 자세한 사항은 [[ScriptRef:iPhoneSettings.StartLocationServiceUpdates.html|scripting reference]]를 보세요.+장치의 지리적 위치는 [[ScriptRef:iPhoneInput-lastLocation.html|iPhoneInput.lastLocation]] 속성을 통해 얻을 수 있다. 사용자는 이 속성을 호출하기 전에 [[ScriptRef:iPhoneSettings.StartLocationServiceUpdates.html|iPhoneSettings.StartLocationServiceUpdates()]]를 이용해서 위치 서비스 업데이트를 시작하고 [[ScriptRef:iPhoneSettings-locationServiceStatus.html|iPhoneSettings.locationServiceStatus]]를 통해 서비스 상태를 확인해야 할 것다. 자세한 사항은 [[ScriptRef:iPhoneSettings.StartLocationServiceUpdates.html|scripting reference]]를 보.
  
  
- 
-{{tag>유니티 unity}} 
    * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.Input|유니티코리아위키]] (CC BY-NC-SA 2.0)    * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.Input|유니티코리아위키]] (CC BY-NC-SA 2.0)