88 lines
2.0 KiB
C#
88 lines
2.0 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace UnityStandardAssets.CrossPlatformInput
|
|
{
|
|
public class TiltInput : MonoBehaviour
|
|
{
|
|
public enum AxisOptions
|
|
{
|
|
ForwardAxis = 0,
|
|
SidewaysAxis = 1
|
|
}
|
|
|
|
[Serializable]
|
|
public class AxisMapping
|
|
{
|
|
public enum MappingType
|
|
{
|
|
NamedAxis = 0,
|
|
MousePositionX = 1,
|
|
MousePositionY = 2,
|
|
MousePositionZ = 3
|
|
}
|
|
|
|
public MappingType type;
|
|
|
|
public string axisName;
|
|
}
|
|
|
|
public AxisMapping mapping;
|
|
|
|
public AxisOptions tiltAroundAxis;
|
|
|
|
public float fullTiltAngle = 25f;
|
|
|
|
public float centreAngleOffset;
|
|
|
|
private CrossPlatformInputManager.VirtualAxis m_SteerAxis;
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (mapping.type == AxisMapping.MappingType.NamedAxis)
|
|
{
|
|
m_SteerAxis = new CrossPlatformInputManager.VirtualAxis(mapping.axisName);
|
|
CrossPlatformInputManager.RegisterVirtualAxis(m_SteerAxis);
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
float value = 0f;
|
|
if (Input.acceleration != Vector3.zero)
|
|
{
|
|
switch (tiltAroundAxis)
|
|
{
|
|
case AxisOptions.ForwardAxis:
|
|
value = Mathf.Atan2(Input.acceleration.x, 0f - Input.acceleration.y) * 57.29578f + centreAngleOffset;
|
|
break;
|
|
case AxisOptions.SidewaysAxis:
|
|
value = Mathf.Atan2(Input.acceleration.z, 0f - Input.acceleration.y) * 57.29578f + centreAngleOffset;
|
|
break;
|
|
}
|
|
}
|
|
float num = Mathf.InverseLerp(0f - fullTiltAngle, fullTiltAngle, value) * 2f - 1f;
|
|
switch (mapping.type)
|
|
{
|
|
case AxisMapping.MappingType.NamedAxis:
|
|
m_SteerAxis.Update(num);
|
|
break;
|
|
case AxisMapping.MappingType.MousePositionX:
|
|
CrossPlatformInputManager.SetVirtualMousePositionX(num * (float)Screen.width);
|
|
break;
|
|
case AxisMapping.MappingType.MousePositionY:
|
|
CrossPlatformInputManager.SetVirtualMousePositionY(num * (float)Screen.width);
|
|
break;
|
|
case AxisMapping.MappingType.MousePositionZ:
|
|
CrossPlatformInputManager.SetVirtualMousePositionZ(num * (float)Screen.width);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
m_SteerAxis.Remove();
|
|
}
|
|
}
|
|
}
|