キー入力が共有されている場合の受け取りについて困っています。
具体的に言うと、以下のように移動とズームの入力を設定したとします。
移動:矢印キー
ズームイン:キーボードのQ + 上矢印キー
ズームアウト:キーボードQ + 下矢印キー
この場合に、ズームイン・アウトをしたく"Q + ↑"をしても、移動の処理が優先されて動いてしまいます。
このようにキー入力が被った際に、それぞれ切り離して処理をするにはどうしたら良いのでしょうか。
キーボードがいっぱいあるから使わなければ良いと思うかもしれませんが、実装はGearVRのコントローラーを考えています。
コントローラーは元々の入力数が少なく、トリガー+タッチパッド、タッチパッドのみなど、一部共有をしながら入力を設定したいのですが、上の理由で共有している部分の動きが理想とずれてしまいます。
C#
1 void Update() 2 { 3 4 //ズームアウト 5 if (Input.GetKey(KeyCode.Q) && Input.GetKey(KeyCode.DownArrow)) 6 { 7 var diff = currentTargetCenter - transform.position; 8 float diffR = diff.magnitude; 9 10 if (diffR < maxDistance) 11 { 12 transform.position = Vector3.MoveTowards(transform.position, currentTargetCenter, -zoomSpeed * Time.deltaTime); 13 } 14 } 15 //ズームイン 16 if (Input.GetKey(KeyCode.Q) && Input.GetKey(KeyCode.UpArrow)) 17 { 18 var diff = currentTargetCenter - transform.position; 19 float diffR = diff.magnitude; 20 21 if (diffR > minDistance) 22 { 23 transform.position = Vector3.MoveTowards(transform.position, currentTargetCenter, zoomSpeed * Time.deltaTime); 24 } 25 } 26 27 28 UpdateCurrentTarget(); 29 30 31 //y軸方向 32 if (Input.GetKey(KeyCode.UpArrow)) 33 { 34 mouse.y += spinSpeed / 60; 35 } 36 if (Input.GetKey(KeyCode.DownArrow)) 37 { 38 mouse.y -= spinSpeed / 60; 39 } 40 mouse.y = Mathf.Clamp(mouse.y, 0.1f, 0.9f); 41 42 43 //x軸方向 44 if (Input.GetKey(KeyCode.RightArrow)) 45 { 46 mouse.x += spinSpeed / 60; 47 } 48 if (Input.GetKey(KeyCode.LeftArrow)) 49 { 50 mouse.x -= spinSpeed / 60; 51 } 52 53 54 //球体座標内 移動処理 55 var diffRoatate = transform.position - currentTargetCenter; 56 float distance = diffRoatate.magnitude; 57 58 pos.x = distance * Mathf.Sin(mouse.y * Mathf.PI) * Mathf.Cos(mouse.x * Mathf.PI); 59 pos.y = -distance * Mathf.Cos(mouse.y * Mathf.PI); 60 pos.z = -distance * Mathf.Sin(mouse.y * Mathf.PI) * Mathf.Sin(mouse.x * Mathf.PI); 61 62 63 transform.position = pos + currentTargetCenter; 64 65 transform.LookAt(currentTargetCenter); 66 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/21 09:18