Files
Fishing2/Assets/UnityStandardAssets/CrossPlatformInput/TiltInput.cs
2025-05-10 12:49:47 +08:00

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();
}
}
}