mirror of
https://github.com/ConjureETS/MTI860_VR_Multi_Controller.git
synced 2026-03-24 04:21:15 +00:00
Punguin Move joycons
This commit is contained in:
parent
0868ca0b41
commit
ffb46827aa
@ -584,7 +584,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 2
|
value: 4
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -1267,7 +1267,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 3
|
value: 5
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
- target: {fileID: -8679921383154817045, guid: 1c178a87d052ee642a2205f8139d9c21,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -1518,7 +1518,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: c277fb14a3cffbf498aaedfce222c56d,
|
- target: {fileID: -8679921383154817045, guid: c277fb14a3cffbf498aaedfce222c56d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 4
|
value: 6
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: c277fb14a3cffbf498aaedfce222c56d,
|
- target: {fileID: -8679921383154817045, guid: c277fb14a3cffbf498aaedfce222c56d,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -1662,7 +1662,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: bb03ebc0c542b4d4695036c9a9536009,
|
- target: {fileID: -8679921383154817045, guid: bb03ebc0c542b4d4695036c9a9536009,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 5
|
value: 7
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: bb03ebc0c542b4d4695036c9a9536009,
|
- target: {fileID: -8679921383154817045, guid: bb03ebc0c542b4d4695036c9a9536009,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -2546,7 +2546,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: e855b3e0d6cb69d40b19e24bd2a1b3a0,
|
- target: {fileID: -8679921383154817045, guid: e855b3e0d6cb69d40b19e24bd2a1b3a0,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 1
|
value: 3
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: e855b3e0d6cb69d40b19e24bd2a1b3a0,
|
- target: {fileID: -8679921383154817045, guid: e855b3e0d6cb69d40b19e24bd2a1b3a0,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -4366,7 +4366,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 1
|
value: 2
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -4376,7 +4376,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: 0.10000008
|
value: 1.08
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
- target: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -4506,12 +4506,12 @@ Transform:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 963194225}
|
m_GameObject: {fileID: 963194225}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0.17046925, y: 0.005578548, z: -0.0010177792, w: 0.98534673}
|
||||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
m_LocalPosition: {x: -0.102371216, y: 2.0939612, z: -1.6292458}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 1941989044}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1001 &975865186
|
--- !u!1001 &975865186
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
@ -5193,7 +5193,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: -8679921383154817045, guid: 38ce8aefc757b73458b452def63fc1a3,
|
- target: {fileID: -8679921383154817045, guid: 38ce8aefc757b73458b452def63fc1a3,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 1
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 38ce8aefc757b73458b452def63fc1a3,
|
- target: {fileID: -8679921383154817045, guid: 38ce8aefc757b73458b452def63fc1a3,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -5520,6 +5520,51 @@ Transform:
|
|||||||
type: 3}
|
type: 3}
|
||||||
m_PrefabInstance: {fileID: 1186200390}
|
m_PrefabInstance: {fileID: 1186200390}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1 &1209096398
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1209096400}
|
||||||
|
- component: {fileID: 1209096399}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: JoyconManager
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &1209096399
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1209096398}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 405bad29b2b998c408059182c189d9e9, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
EnableIMU: 1
|
||||||
|
EnableLocalize: 1
|
||||||
|
--- !u!4 &1209096400
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1209096398}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 11
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1001 &1216353526
|
--- !u!1001 &1216353526
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -8895,6 +8940,65 @@ BoxCollider:
|
|||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Size: {x: 2.0196953, y: 0.2, z: 2.0206933}
|
m_Size: {x: 2.0196953, y: 0.2, z: 2.0206933}
|
||||||
m_Center: {x: 0.0039343834, y: 0, z: 0.012269765}
|
m_Center: {x: 0.0039343834, y: 0, z: 0.012269765}
|
||||||
|
--- !u!1 &1941989041 stripped
|
||||||
|
GameObject:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
||||||
|
type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 962442943}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!114 &1941989042
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1941989041}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a3db9d02d190fcb46a9646c275a560e4, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
isDebug: 0
|
||||||
|
body: {fileID: 1941989043}
|
||||||
|
constSpeed: 2
|
||||||
|
constRotation: 150
|
||||||
|
constUpForce: 5
|
||||||
|
--- !u!54 &1941989043
|
||||||
|
Rigidbody:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1941989041}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Mass: 5
|
||||||
|
m_Drag: 0
|
||||||
|
m_AngularDrag: 0.05
|
||||||
|
m_UseGravity: 1
|
||||||
|
m_IsKinematic: 0
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_Constraints: 112
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
--- !u!4 &1941989044 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 56fd8a0aa3b18fa43994e325b7d32a93,
|
||||||
|
type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 962442943}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!136 &1941989045
|
||||||
|
CapsuleCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1941989041}
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Radius: 0.5
|
||||||
|
m_Height: 1.4958494
|
||||||
|
m_Direction: 1
|
||||||
|
m_Center: {x: 0, y: 0.69886935, z: 0}
|
||||||
--- !u!65 &1946133526
|
--- !u!65 &1946133526
|
||||||
BoxCollider:
|
BoxCollider:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
8
Assets/Scripts/JoyCon.meta
Normal file
8
Assets/Scripts/JoyCon.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9a8928691c8f20649b560fbba94c0b66
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
26
Assets/Scripts/JoyCon/HistoricalData.cs
Normal file
26
Assets/Scripts/JoyCon/HistoricalData.cs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
namespace JoyCon
|
||||||
|
{
|
||||||
|
public class HistoricalData
|
||||||
|
{
|
||||||
|
private readonly float[] _data;
|
||||||
|
private int _index;
|
||||||
|
|
||||||
|
public float Total { get; private set; }
|
||||||
|
|
||||||
|
public float Mean { get; private set; }
|
||||||
|
|
||||||
|
public HistoricalData(int numberOfDataToKeep)
|
||||||
|
{
|
||||||
|
_data = new float[numberOfDataToKeep];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddData(float newData)
|
||||||
|
{
|
||||||
|
Total -= _data[_index];
|
||||||
|
Total += newData;
|
||||||
|
Mean = Total / _data.Length;
|
||||||
|
_data[_index] = newData;
|
||||||
|
_index = (_index + 1) % _data.Length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/JoyCon/HistoricalData.cs.meta
Normal file
11
Assets/Scripts/JoyCon/HistoricalData.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 49cb22f532589c046ae8a23cda8f95a4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
16
Assets/Scripts/JoyCon/JoyConBehaviour.cs
Normal file
16
Assets/Scripts/JoyCon/JoyConBehaviour.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace JoyCon
|
||||||
|
{
|
||||||
|
public class JoyConBehaviour : MonoBehaviour
|
||||||
|
{
|
||||||
|
protected JoyconManager JoyConManager;
|
||||||
|
protected const int JcLegInd = 0;
|
||||||
|
protected const int JcArmInd = 1;
|
||||||
|
|
||||||
|
protected virtual void Start()
|
||||||
|
{
|
||||||
|
JoyConManager = JoyconManager.Instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/JoyCon/JoyConBehaviour.cs.meta
Normal file
11
Assets/Scripts/JoyCon/JoyConBehaviour.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7eeb516887b07bd47bd1e8de5375d153
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
71
Assets/Scripts/JoyCon/JoyConMovement.cs
Normal file
71
Assets/Scripts/JoyCon/JoyConMovement.cs
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace JoyCon
|
||||||
|
{
|
||||||
|
public class JoyConMovement : JoyConBehaviour
|
||||||
|
{
|
||||||
|
[Header("DEBUG movement")]
|
||||||
|
[SerializeField] public bool isDebug;
|
||||||
|
|
||||||
|
[Header("References")]
|
||||||
|
[SerializeField] private Rigidbody body;
|
||||||
|
|
||||||
|
[Header("Configuration")]
|
||||||
|
[SerializeField] private int constSpeed;
|
||||||
|
[SerializeField] private int constRotation;
|
||||||
|
[SerializeField] private int constUpForce;
|
||||||
|
|
||||||
|
private HistoricalData _gyroMagnitude;
|
||||||
|
|
||||||
|
private int _speed;
|
||||||
|
|
||||||
|
private Vector3 _playerDirection;
|
||||||
|
|
||||||
|
|
||||||
|
protected override void Start()
|
||||||
|
{
|
||||||
|
if(!isDebug)
|
||||||
|
{
|
||||||
|
base.Start();
|
||||||
|
_gyroMagnitude = new HistoricalData(5);
|
||||||
|
_speed = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if(!isDebug)
|
||||||
|
{
|
||||||
|
Joycon j = JoyConManager.GetJoycon(JcLegInd);
|
||||||
|
_playerDirection = j.GetButton(Joycon.Button.SHOULDER_2) ? Vector3.back : Vector3.forward;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FixedUpdate()
|
||||||
|
{
|
||||||
|
if(!isDebug)
|
||||||
|
{
|
||||||
|
Joycon j = JoyConManager.GetJoycon(JcLegInd);
|
||||||
|
Joycon jArm = JoyConManager.GetJoycon(JcArmInd);
|
||||||
|
|
||||||
|
_gyroMagnitude.AddData(j.GetGyro().magnitude);
|
||||||
|
|
||||||
|
_speed = IsWalking() ? 4 : 0;
|
||||||
|
|
||||||
|
body.transform.Rotate(0, jArm.GetStick()[0] * constRotation * Time.fixedDeltaTime, 0);
|
||||||
|
|
||||||
|
body.AddRelativeForce(_playerDirection * (_speed * _gyroMagnitude.Total * constSpeed));
|
||||||
|
body.AddForce(Vector3.up * constUpForce);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
float moveHorizontal = Input.GetAxis("Horizontal");
|
||||||
|
float moveVertical = Input.GetAxis("Vertical");
|
||||||
|
transform.Rotate(0.0f, moveHorizontal * constSpeed * 2, 0.0f);
|
||||||
|
transform.Translate(0, 0, moveVertical * constSpeed / 20);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsWalking() => Mathf.Abs(_gyroMagnitude.Total) > 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/JoyCon/JoyConMovement.cs.meta
Normal file
11
Assets/Scripts/JoyCon/JoyConMovement.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a3db9d02d190fcb46a9646c275a560e4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
20
Assets/Scripts/JoyCon/JoyConRotationFollow.cs
Normal file
20
Assets/Scripts/JoyCon/JoyConRotationFollow.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace JoyCon
|
||||||
|
{
|
||||||
|
public class JoyConRotationFollow : JoyConBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private Transform ObjectParent;
|
||||||
|
[SerializeField] private Transform ObjectToRotate;
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
Joycon j = JoyConManager.GetJoycon(JcArmInd);
|
||||||
|
if (j.GetButtonDown(Joycon.Button.SHOULDER_2))
|
||||||
|
{
|
||||||
|
j.Recenter();
|
||||||
|
}
|
||||||
|
ObjectToRotate.eulerAngles = ObjectParent.eulerAngles + j.GetVector().eulerAngles;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/JoyCon/JoyConRotationFollow.cs.meta
Normal file
11
Assets/Scripts/JoyCon/JoyConRotationFollow.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3e725b7824fa7894080486a2470ec121
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
90
Assets/Scripts/JoyCon/JoyConRumble.cs
Normal file
90
Assets/Scripts/JoyCon/JoyConRumble.cs
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace JoyCon
|
||||||
|
{
|
||||||
|
public enum RumbleType
|
||||||
|
{
|
||||||
|
ConstantRumble,
|
||||||
|
LinearRumble,
|
||||||
|
PulseRumble,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class JoyConRumble : JoyConBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private RumbleType RumbleType;
|
||||||
|
[SerializeField] private int RumbleLocation;
|
||||||
|
[SerializeField] private int _rumbleDuration = 250;
|
||||||
|
[SerializeField] private int Rep = 10;
|
||||||
|
private IEnumerator _coroutine;
|
||||||
|
private const float MaxRumbleFrequency = 100f;
|
||||||
|
|
||||||
|
public void Set(RumbleType rumbleType, int rumbleLocation, int rumbleDuration, int rep =10)
|
||||||
|
{
|
||||||
|
RumbleType = rumbleType;
|
||||||
|
RumbleLocation = rumbleLocation;
|
||||||
|
_rumbleDuration = rumbleDuration;
|
||||||
|
Rep = rep;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Start()
|
||||||
|
{
|
||||||
|
base.Start();
|
||||||
|
switch (RumbleType)
|
||||||
|
{
|
||||||
|
case RumbleType.ConstantRumble:
|
||||||
|
_coroutine = ConstantRumble();
|
||||||
|
break;
|
||||||
|
case RumbleType.LinearRumble:
|
||||||
|
_coroutine = LinearRumble();
|
||||||
|
break;
|
||||||
|
case RumbleType.PulseRumble:
|
||||||
|
_coroutine = PulseRumble();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException();
|
||||||
|
}
|
||||||
|
StartCoroutine(_coroutine);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator ConstantRumble()
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(0.1f);
|
||||||
|
Joycon j = JoyConManager.GetJoycon(RumbleLocation);
|
||||||
|
j.SetRumble(150, 150, 0.6f, _rumbleDuration);
|
||||||
|
yield return new WaitForSeconds(0.1f);
|
||||||
|
Destroy(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator LinearRumble()
|
||||||
|
{
|
||||||
|
const float i = 1.05f;
|
||||||
|
int time = 0;
|
||||||
|
float maxFrequency = 30f;
|
||||||
|
yield return new WaitForSeconds(0.1f);
|
||||||
|
Joycon j = JoyConManager.GetJoycon(RumbleLocation);
|
||||||
|
while(time < Rep)
|
||||||
|
{
|
||||||
|
j.SetRumble(25, maxFrequency, 0.6f, _rumbleDuration);
|
||||||
|
time++;
|
||||||
|
maxFrequency = Mathf.Min(maxFrequency * i, MaxRumbleFrequency);
|
||||||
|
yield return new WaitForSeconds(0.1f);
|
||||||
|
}
|
||||||
|
Destroy(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator PulseRumble() {
|
||||||
|
yield return new WaitForSeconds(0.1f);
|
||||||
|
int time = 0;
|
||||||
|
Joycon j = JoyConManager.GetJoycon(RumbleLocation);
|
||||||
|
while (time < Rep)
|
||||||
|
{
|
||||||
|
j.SetRumble(50, 150, 0.6f, 500);
|
||||||
|
time++;
|
||||||
|
yield return new WaitForSeconds(1f);
|
||||||
|
}
|
||||||
|
Destroy(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/JoyCon/JoyConRumble.cs.meta
Normal file
11
Assets/Scripts/JoyCon/JoyConRumble.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: df5d6598237e80b4b8ea7afa4d84e1d4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
84
Assets/Scripts/JoyCon/JoyconDemo.cs
Normal file
84
Assets/Scripts/JoyCon/JoyconDemo.cs
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class JoyconDemo : MonoBehaviour {
|
||||||
|
|
||||||
|
private List<Joycon> joycons;
|
||||||
|
|
||||||
|
// Values made available via Unity
|
||||||
|
public float[] stick;
|
||||||
|
public Vector3 gyro;
|
||||||
|
public Vector3 accel;
|
||||||
|
public int jc_ind = 0;
|
||||||
|
public Quaternion orientation;
|
||||||
|
|
||||||
|
void Start ()
|
||||||
|
{
|
||||||
|
gyro = new Vector3(0, 0, 0);
|
||||||
|
accel = new Vector3(0, 0, 0);
|
||||||
|
// get the public Joycon array attached to the JoyconManager in scene
|
||||||
|
joycons = JoyconManager.Instance.ConnectedJoycons;
|
||||||
|
if (joycons.Count < jc_ind+1){
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update () {
|
||||||
|
// make sure the Joycon only gets checked if attached
|
||||||
|
if (joycons.Count > 0)
|
||||||
|
{
|
||||||
|
Joycon j = joycons [jc_ind];
|
||||||
|
// GetButtonDown checks if a button has been pressed (not held)
|
||||||
|
if (j.GetButtonDown(Joycon.Button.SHOULDER_2))
|
||||||
|
{
|
||||||
|
Debug.Log ("Shoulder button 2 pressed");
|
||||||
|
// GetStick returns a 2-element vector with x/y joystick components
|
||||||
|
Debug.Log(string.Format("Stick x: {0:N} Stick y: {1:N}",j.GetStick()[0],j.GetStick()[1]));
|
||||||
|
|
||||||
|
// Joycon has no magnetometer, so it cannot accurately determine its yaw value. Joycon.Recenter allows the user to reset the yaw value.
|
||||||
|
j.Recenter ();
|
||||||
|
}
|
||||||
|
// GetButtonDown checks if a button has been released
|
||||||
|
if (j.GetButtonUp (Joycon.Button.SHOULDER_2))
|
||||||
|
{
|
||||||
|
Debug.Log ("Shoulder button 2 released");
|
||||||
|
}
|
||||||
|
// GetButtonDown checks if a button is currently down (pressed or held)
|
||||||
|
if (j.GetButton (Joycon.Button.SHOULDER_2))
|
||||||
|
{
|
||||||
|
Debug.Log ("Shoulder button 2 held");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j.GetButtonDown (Joycon.Button.DPAD_DOWN)) {
|
||||||
|
Debug.Log ("Rumble");
|
||||||
|
|
||||||
|
// Rumble for 200 milliseconds, with low frequency rumble at 160 Hz and high frequency rumble at 320 Hz. For more information check:
|
||||||
|
// https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/rumble_data_table.md
|
||||||
|
|
||||||
|
j.SetRumble (160, 320, 0.6f, 200);
|
||||||
|
|
||||||
|
// The last argument (time) in SetRumble is optional. Call it with three arguments to turn it on without telling it when to turn off.
|
||||||
|
// (Useful for dynamically changing rumble values.)
|
||||||
|
// Then call SetRumble(0,0,0) when you want to turn it off.
|
||||||
|
}
|
||||||
|
|
||||||
|
stick = j.GetStick();
|
||||||
|
|
||||||
|
// Gyro values: x, y, z axis values (in radians per second)
|
||||||
|
gyro = j.GetGyro();
|
||||||
|
|
||||||
|
// Accel values: x, y, z axis values (in Gs)
|
||||||
|
accel = j.GetAccel();
|
||||||
|
|
||||||
|
orientation = j.GetVector();
|
||||||
|
/*if (j.GetButton(Joycon.Button.DPAD_UP)){
|
||||||
|
gameObject.GetComponent<Renderer>().material.color = Color.red;
|
||||||
|
} else{
|
||||||
|
gameObject.GetComponent<Renderer>().material.color = Color.blue;
|
||||||
|
}*/
|
||||||
|
gameObject.transform.rotation = orientation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/JoyCon/JoyconDemo.cs.meta
Normal file
11
Assets/Scripts/JoyCon/JoyconDemo.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0a51932488397274d9623a84c8a1fff2
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Loading…
x
Reference in New Issue
Block a user