차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| unity:input [2015/08/23 09:56] – 바깥 편집 127.0.0.1 | unity:input [2018/02/22 03:04] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | {{tag> | ||
| ======입력 Input====== | ======입력 Input====== | ||
| ======데스크톱 Desktop====== | ======데스크톱 Desktop====== | ||
| + | 유니티는 키보드, 조이스틱과 게임패드 입력을 지원함. | ||
| + | :!: 키보드, 조이스틱, | ||
| - | :!: 키보드, 조이스틱, | ||
| - | 유니티는 키보드, 조이스틱과 게임패드 입력을 지원합니다. | ||
| - | 가상 축과 버튼은 입력 매니져 Input Manager 에서 만들수 있고 사용자는 키보드 입력을 화면 설정 대화창 screen configuration dialogue 에서 설정할 수 있습니다. | + | 가상 축과 버튼은 |
| - | {{: | ||
| - | 사용자는 조이스틱, | ||
| - | 스크립트에서 모든 가상 축은 | + | {{: |
| + | |||
| + | 사용자는 조이스틱, 게임패드, | ||
| - | 모든 | + | 스크립트에서 |
| - | * //수평 Horizontal// | + | 모든 프로젝트는 생성되었을 때 아래의 기본 입력 축 input axe 을 가진다: |
| - | * //발사 Fire1//, // 발사 Fire2//, // 발사 Fire3// | + | |
| - | * //마우스 Mouse X// 와 //마우스 Mouse Y// 는 마우스 이동의 델타 delta 와 연결되어 있습니다. | + | |
| - | * //윈도우 셰이크 Window Shake X// 와// | + | |
| + | * //수평 Horizontal// | ||
| + | * //발사 Fire1//, // 발사 Fire2//, // 발사 Fire3// 는 각각 Ctrl, Option (Alt), Command으로 연결되어 있다. | ||
| + | * //마우스 Mouse X// 와 //마우스 Mouse Y// 는 마우스 이동의 델타 delta 와 연결되어 있다. | ||
| + | * //윈도우 셰이크 Window Shake X// 와// | ||
| ====새로운 입력 축 추가하기 Adding new Input Axes==== | ====새로운 입력 축 추가하기 Adding new Input Axes==== | ||
| - | 새로운 입력 축을 추가하고 싶으면 **Edit-> | + | 새로운 입력 축을 추가하고 싶으면 **Edit-> |
| {{: | {{: | ||
| - | 사용자는 각각의 축을 조이스틱, | + | 사용자는 각각의 축을 조이스틱, |
| 줄 43: | 줄 44: | ||
| |// | |// | ||
| |//Dead// |아날로그 데드존 dead zone 의 크기. 이 범위에 속하는 모든 아날로그 장치 값은 맵이 중립이 되게 만듭니다.| | |//Dead// |아날로그 데드존 dead zone 의 크기. 이 범위에 속하는 모든 아날로그 장치 값은 맵이 중립이 되게 만듭니다.| | ||
| - | |// | + | |// |
| - | |//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> | <file csharp> | ||
| - | 축은 -1부터 1까지의 값을 가집니다. 중립 위치는 0입니다. | + | 축은 -1부터 1까지의 값을 가진다. 중립 위치는 0이다. |
| - | 이것은 조이스틱과 키보드 입력의 경우입니다. | + | 이것은 조이스틱과 키보드 입력의 경우이다. |
| - | 그러나 마우스 델타 Mouse Delta 와 윈도우 셰이크 델타 Window Shake Delta 는 마지막 프레임동안 얼마나 마우스나 윈도우가 움직였는가 | + | 그러나 마우스 델타 Mouse Delta 와 윈도우 셰이크 델타 Window Shake Delta 는 마지막 프레임동안 얼마나 마우스나 윈도우가 움직였는가 |
| - | 같은 이름으로 여러 개의 축을 만드는 것은 가능합니다. 입력 축 input axis 을 얻을 때는 가장 큰 절대값을 가진 | + | 같은 이름으로 여러 개의 축을 만드는 것은 가능. 입력 축 input axis 을 얻을 때는 가장 큰 절대값을 가진 |
| ====버튼 이름 Button Names==== | ====버튼 이름 Button Names==== | ||
| - | 하나의 키를 어떤 축과 연결시키기 위해서는 키의 이름을 '' | + | 하나의 키를 어떤 축과 연결시키기 위해서는 키의 이름을 '' |
| 키의 이름은 아래의 관례를 따릅니다: | 키의 이름은 아래의 관례를 따릅니다: | ||
| 줄 81: | 줄 81: | ||
| * 기능 키: " | * 기능 키: " | ||
| - | 키들을 식별하기 위한 이름은 스크립팅 인터페이스에서나 인스펙터에서나 같습니다. | + | 키들을 식별하기 위한 이름은 스크립팅 인터페이스에서나 인스펙터에서나 같다. |
| <file csharp> | <file csharp> | ||
| - | |||
| ======모바일 입력 Mobile Input====== | ======모바일 입력 Mobile Input====== | ||
| - | 유니티 iOS/ | + | 유니티 iOS/ |
| - | [[ScriptRef: | + | [[ScriptRef: |
| - | [[ScriptRef: | + | [[ScriptRef: |
| - | 모바일 장치에서 키보드로의 접근은 [[unity: | + | 모바일 장치에서 키보드로의 접근은 [[unity: |
| =====멀티터치 스크린 Multi-Touch Screen===== | =====멀티터치 스크린 Multi-Touch Screen===== | ||
| - | 아이폰과 아이팟 터치 장치는 다섯 손가락의 동시 터치를 감지할 수 있습니다. 사용자는 [[ScriptRef: | + | 아이폰과 아이팟 터치 장치는 다섯 손가락의 동시 터치를 감지할 수 있다. 사용자는 [[ScriptRef: |
| - | + | ||
| - | < | + | |
| - | 안드로이드 장치들은 한번에 얼마나 많은 손가락 터치를 감지할 지에 대한 일관된 제한 기준이 없습니다. 조금 오래된 장치에서는 두 손가락 터치, 조금 더 최신 장치에서는 다섯 손가락까지 이것은 장치마다 다 틀립니다. | + | |
| + | 안드로이드 장치들은 한번에 얼마나 많은 손가락 터치를 감지할 지에 대한 일관된 제한 기준이 없다. 조금 오래된 장치에서는 두 손가락 터치, 조금 더 최신 장치에서는 다섯 손가락까지 이것은 장치마다 다 틀립니다. | ||
| - | 각 손가락 터치는 [[ScriptRef: | + | 각 손가락 터치는 [[ScriptRef: |
| |PROPS | |PROPS | ||
| |// | |// | ||
| 줄 108: | 줄 105: | ||
| |// | |// | ||
| |// | |// | ||
| - | |// | + | |// |
| - | |//phase// |터치상태, | + | |//phase// |터치상태, |
| |END | |END | ||
| - | 터치상태인 페이즈 Phase 는 아래 중 하나의 상태에 있게 | + | 터치상태인 페이즈 Phase 는 아래 중 하나의 상태에 있게 |
| |//Began// |손가락이 방금 화면을 터치함. | |//Began// |손가락이 방금 화면을 터치함. | ||
| |//Moved// |손가락이 화면에서 움직임. | |//Moved// |손가락이 화면에서 움직임. | ||
| |// | |// | ||
| - | |//Ended// |손가락이 화면에서 들어올려짐. 이것은 터치의 마지막 페이즈 phase 입니다. | + | |//Ended// |손가락이 화면에서 들어올려짐. 이것은 터치의 마지막 페이즈 phase 이다. |
| - | |// | + | |// |
| - | 다음은 유저가 화면을 탭 할때마다 광선 ray 을 뿌리는 예제 스크립트입니다: | + | 다음은 유저가 화면을 탭 할때마다 광선 ray 을 뿌리는 예제 스크립트이다: |
| <file csharp> | <file csharp> | ||
| var particle : GameObject; | var particle : GameObject; | ||
| function Update () { | function Update () { | ||
| - | 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, | + | Instantiate (particle, transform.position, |
| - | } | + | } |
| - | } | + | } |
| - | } | + | } |
| } | } | ||
| </ | </ | ||
| ====마우스 시뮬레이션 Mouse Simulation==== | ====마우스 시뮬레이션 Mouse Simulation==== | ||
| - | 본래의 터치 지원 이외에도 유니티 iOS/ | + | 본래의 터치 지원 이외에도 유니티 iOS/ |
| =====장치 방향 Device Orientation===== | =====장치 방향 Device Orientation===== | ||
| - | 유니티 iOS/ | + | 유니티 iOS/ |
| - | 사용자는 | + | 사용자는 |
| - | |// | + | |// |
| - | |// | + | |// |
| - | |// | + | |// |
| - | |// | + | |// |
| - | |// | + | |// |
| - | |//FaceUp// |장치의 화면이 위 (하늘) 쪽을 향한 채로 지면과 평행으로 놓여 있습니다. | + | |//FaceUp// |장치의 화면이 위 (하늘) 쪽을 향한 채로 지면과 평행으로 놓여 있다. |
| - | |// | + | |// |
| =====가속도계 Accelerometer===== | =====가속도계 Accelerometer===== | ||
| - | 모바일 장치가 움직이면서 내장된 가속도계 accelerometer 는 3D 공간에서 일차적인 세 개의 축에 대한 선형 가속 변화 llinear acceleration changes 를 보고합니다. 각 축 방향으로의 가속은 G-force 값으로 하드웨어에 의해 직접 보고 되어집니다. 값 1.0은 주어진 축에서 +1g의 양을 나타내며 -1.0은 -1g를 나타냅니다. 만약 사용자가 | + | 모바일 장치가 움직이면서 내장된 가속도계 accelerometer 는 3D 공간에서 일차적인 세 개의 축에 대한 선형 가속 변화 llinear acceleration changes 를 보고. 각 축 방향으로의 가속은 G-force 값으로 하드웨어에 의해 직접 보고 되어진다. 값 1.0은 주어진 축에서 +1g의 양을 나타내며 -1.0은 -1g를 나타냅니다. 만약 사용자가 |
| - | 가속도계 값은 [[ScriptRef: | + | 가속도계 값은 [[ScriptRef: |
| - | 아래는 가속도계를 이용해서 객체를 움직이는 예제 스크립트입니다: | + | 아래는 가속도계를 이용해서 객체를 움직이는 예제 스크립트이다: |
| <file csharp> | <file csharp> | ||
| var speed = 10.0; | var speed = 10.0; | ||
| function Update () { | function Update () { | ||
| - | 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 에 고정. | + | |
| - | if (dir.sqrMagnitude > 1) | + | if (dir.sqrMagnitude > 1) |
| - | dir.Normalize(); | + | dir.Normalize(); |
| - | //이것을 프레임당 10미터 대신 초당 10미터로 이동하게 만듭니다. | + | |
| - | dir *= Time.deltaTime; | + | dir *= Time.deltaTime; |
| - | //객체를 이동합니다. | + | |
| - | transform.Translate (dir * speed); | + | transform.Translate (dir * speed); |
| } | } | ||
| </ | </ | ||
| ====로우-패스 필터 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; | + | |
| } | } | ||
| function LowPassFilterAccelerometer() : Vector3 { | function LowPassFilterAccelerometer() : Vector3 { | ||
| - | lowPassValue = Mathf.Lerp(lowPassValue, | + | |
| - | return lowPassValue; | + | return lowPassValue; |
| } | } | ||
| </ | </ | ||
| - | '' | + | '' |
| - | ====가속도계를 읽을 때 가장 정밀한 값을 원합니다. 어떻게 해야 하나요? | + | ====가속도계를 읽을 때 가장 정밀한 값을 원한다면 어떻게 해야 하나요? |
| - | [[ScriptRef: | + | |
| - | 프레임에서 가속도계가 그 프레임에서 실행한 모든 측정 정보에 접근할 수 있습니다. 아래의 코드는 마지막 프레임안에서 수집된 모든 가속도계 이벤트의 간단한 평균을 보여줄 것입니다: | + | |
| + | [[ScriptRef: | ||
| + | |||
| + | 프레임에서 가속도계가 그 프레임에서 실행한 모든 측정 정보에 접근할 수 있다. 아래의 코드는 마지막 프레임안에서 수집된 모든 가속도계 이벤트의 간단한 평균을 보여줄 것이다: | ||
| <file csharp> | <file csharp> | ||
| 줄 214: | 줄 213: | ||
| var acc : Vector3 = Vector3.zero; | var acc : Vector3 = Vector3.zero; | ||
| for (var evnt : iPhoneAccelerationEvent | for (var evnt : iPhoneAccelerationEvent | ||
| - | acc += evnt.acceleration * evnt.deltaTime; | + | |
| - | period += evnt.deltaTime; | + | period += evnt.deltaTime; |
| } | } | ||
| if (period > 0) | if (period > 0) | ||
| - | acc *= 1.0/period; | + | |
| return acc; | return acc; | ||
| </ | </ | ||
| 줄 224: | 줄 223: | ||
| =====추가 읽기 Further Reading===== | =====추가 읽기 Further Reading===== | ||
| - | 유니티 모바일 입력 API는 원래 애플의 API에 기반을 둡니다. 유니티의 입력 API를 더 잘 이해하기 위해서는 원래 API를 배우면 도움이 될 것입니다. 아래에서 애플 입력 API문서를 찾을 수 있습니다: | + | 유니티 모바일 입력 API는 원래 애플의 API에 기반을 둡니다. 유니티의 입력 API를 더 잘 이해하기 위해서는 원래 API를 배우면 도움이 될 것이다. 아래에서 애플 입력 API문서를 찾을 수 있다: |
| *[[file:/// | *[[file:/// | ||
| *[[file:/// | *[[file:/// | ||
| - | _주의:_ 위 링크들은 사용자의 로컬 설치된 아이폰 SDK 참조 문서 iPhone SDK Reference Documentation 를 참조하고 본래 ObjectiveC 코드를 포함하고 있을 것입니다. 유니티를 모바일 장치에서 사용하기 위해 꼭 위의 문서들을 이해할 필요는 없으나 도움이 되는 분들이 있을 것입니다! | + | _주의:_ 위 링크들은 사용자의 로컬 설치된 아이폰 SDK 참조 문서 iPhone SDK Reference Documentation 를 참조하고 본래 ObjectiveC 코드를 포함하고 있을 것이다. 유니티를 모바일 장치에서 사용하기 위해 꼭 위의 문서들을 이해할 필요는 없으나 도움이 되는 분들이 있을 것이다! |
| ======iOS!====== | ======iOS!====== | ||
| [[# | [[# | ||
| - | |||
| =====장치의 지리적 위치 Device geographical location===== | =====장치의 지리적 위치 Device geographical location===== | ||
| - | 장치의 지리적 위치는 [[ScriptRef: | + | 장치의 지리적 위치는 [[ScriptRef: |
| - | |||
| - | {{tag> | ||
| * 출처: [[http:// | * 출처: [[http:// | ||