private void ControllerStance(int i) { SixAxisSensor.GetState(ref state, handle[i]); state.GetQuaternion(ref npadQuaternion); quaternion.Set(npadQuaternion.x, npadQuaternion.z, npadQuaternion.y, -npadQuaternion.w); JoyConStance[i] = quaternion.eulerAngles; }
void UpdateSixAxisSensors() { for (var i = 0; i < SixAxisSensorCount; i++) { SixAxisSensor.GetState(ref SixAxisSensorStates[i], SixAxisSensorHandles[i]); } }
private void Init() { sixAxisHandleCount = SixAxisSensor.GetHandles(sixAxisHandle, 2, NpadId.No1, NpadStyle.JoyRight); //Start sensor for (int i = 0; i < sixAxisHandleCount; i++) { SixAxisSensor.Start(sixAxisHandle[i]); } }
private void GetSixAxisSensor(NpadId id, NpadStyle style) { for (int i = 0; i < handleCount; i++) { SixAxisSensor.Stop(handle[i]); } handleCount = SixAxisSensor.GetHandles(handle, 2, id, style); for (int i = 0; i < handleCount; i++) { SixAxisSensor.Start(handle[i]); } }
void Update() { NowStyle(); if (UpdatePadState()) { for (int i = 0; i < handleCount; i++) { SixAxisSensor.GetState(ref state, handle[i]); JoyConShake(i); SetAnalogStick(i); ControllerStance(i); joyConAcceleration[i] = Float3toVector3(state.acceleration); } } }
//振ったかどうかの判定 private void JoyConShake(int i) { SixAxisSensor.GetState(ref state, handle[i]); float x = Mathf.Abs(state.acceleration.x); float y = Mathf.Abs(state.acceleration.y); float z = Mathf.Abs(state.acceleration.z); if (x >= 5 || y >= 5 || z >= 5) { ShakeCheck[i] = true; } else { ShakeCheck[i] = false; } }
/// <summary> /// 加速度の更新 /// </summary> static public void AccelerationUpdate(int index, NpadId npadId) { //未接続 if (!SwitchManager.GetInstance().IsConnect(index)) { return; } //スタイルの取得 npadStyle = Npad.GetStyleSet(npadId); SixAxisSensor.GetHandles(handles, 1, npadId, npadStyle); //ジャイロスタート SixAxisSensor.Start(handles[0]); SixAxisSensor.GetState(ref sixAxisSensorState, handles[0]); var switchAcceleration = sixAxisSensorState.acceleration; Acceleration[index].Set(switchAcceleration.x, switchAcceleration.y, switchAcceleration.z); }
private void Update() { nn.util.Float4 float4TempSensorData = new nn.util.Float4(); for (int i = 0; i < sixAxisHandleCount; i++) { //Crash in UNITY_EDITOR SixAxisSensor.GetState(ref sixAxisStates[i], sixAxisHandle[i]); sixAxisStates[i].GetQuaternion(ref float4TempSensorData); //Convert to an Unity Quaternion Quaternion rawSensorRotation = new Quaternion( float4TempSensorData.x, float4TempSensorData.z, float4TempSensorData.y, float4TempSensorData.w * -1f); Debug.Log(rawSensorRotation); } }
void SetupSixAxisSensors() { for (var i = 0; i < SixAxisSensorCount; i++) { SixAxisSensor.Stop(SixAxisSensorHandles[i]); } if (EnableSixAxisSensors && HasNPadStyle) { SixAxisSensorCount = SixAxisSensor.GetHandles(SixAxisSensorHandles, 2, NPadId, NPadStyle); for (var i = 0; i < SixAxisSensorCount; i++) { SixAxisSensor.Start(SixAxisSensorHandles[i]); } } else { SixAxisSensorCount = 0; } }
/// <summary> /// ジャイロの取得 /// </summary> /// <param name="_Index">コントローラーの番号</param> /// <returns>ジャイロの回転(使用するx軸のみ)</returns> static public float GetGyroX(int _Index) { //未接続なら0.0f if (!SwitchManager.GetInstance().IsConnect(_Index)) { return(0.0f); } //キーがない場合は追加しておく if (!m_BaseGyro.ContainsKey(_Index)) { m_BaseGyro.Add(_Index, 0.0f); } //IDの取得 NpadId npadId = SwitchManager.GetInstance().GetNpadId(_Index); //スタイルの取得 NpadStyle npadStyle = Npad.GetStyleSet(npadId); //ハンドラを取得 int handleCount = SixAxisSensor.GetHandles(m_GyroHandles, 1, npadId, npadStyle); //ハンドラの数が1じゃない場合は0.0f if (handleCount != 1) { return(0.0f); } //ジャイロスタート SixAxisSensor.Start(m_GyroHandles[0]); //状態の取得 SixAxisSensor.GetState(ref m_GyroState, m_GyroHandles[0]); //右か左で返す値を変換する if (npadStyle == NpadStyle.JoyRight) { return(m_GyroState.angle.x % 1 * 360 - 90 - m_BaseGyro[_Index]); } else { return(m_GyroState.angle.x % 1 * -360 + 90 - m_BaseGyro[_Index]); } }
/// <summary> /// ジャイロの取得の実装部 /// </summary> /// <param name="index">コントローラーの番号</param> /// <returns>ジャイロの回転</returns> static Quaternion GetGyroImpl(int index) { #if UNITY_SWITCH && !(UNITY_EDITOR) //IDの取得 NpadId npadId = SwitchManager.GetInstance().GetNpadId(index); //スタイルの取得 NpadStyle npadStyle = Npad.GetStyleSet(npadId); //ハンドラを取得 int handleCount = SixAxisSensor.GetHandles(gyroHandles, 1, npadId, npadStyle); //ハンドラの数が1じゃない場合はQuaternion.identity if (handleCount != 1) { return(Quaternion.identity); } //ジャイロスタート SixAxisSensor.Start(gyroHandles[0]); //状態の取得 SixAxisSensor.GetState(ref gyroState, gyroHandles[0]); gyroState.GetQuaternion(ref refQuaternion); quat.Set(refQuaternion.x, refQuaternion.z, refQuaternion.y, -refQuaternion.w); #endif return(quat); }
void Update() { stringBuilder.Length = 0; NowStyle(); if (UpdatePadState()) { for (int i = 0; i < handleCount; i++) { SixAxisSensor.GetState(ref state, handle[i]); JoyConShake(i); SetAnalogStick(i); ControllerStance(i); JoyConAcceleration[i] = Float3toVector3(state.acceleration); stringBuilder.AppendFormat( "{0}[{1}]:\nShakeCheck({2})\nAnalogStick({3})\nVector3\n(X:{4})\n(Y:{5})\n(Z:{6})\nJoyConAcceleration\n(X:{7})\n(Y:{8})\n(Z:{9})", npadStyle.ToString(), i + 1, ShakeCheck[i], AnalogStick[i], JoyConStance[i].x, JoyConStance[i].y, JoyConStance[i].z, JoyConAcceleration[i].x, JoyConAcceleration[i].y, JoyConAcceleration[i].z); textComponent.text = stringBuilder.ToString(); } } }