차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
unity:input [2015/05/21 23:34] – 문서가 unity3d:input에서 unity:input(으)로 옮겨졌습니다 V_L | 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:// | ||