Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
DMD2542-Project003-RaycastingRepo-JacobTomassi/DMD2542-Project003-Raycasting-JacobTomassi/Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
75 lines (65 sloc)
2.25 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using UnityEngine; | |
using UnityEngine.EventSystems; | |
namespace UnityStandardAssets.CrossPlatformInput | |
{ | |
public class AxisTouchButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler | |
{ | |
// designed to work in a pair with another axis touch button | |
// (typically with one having -1 and one having 1 axisValues) | |
public string axisName = "Horizontal"; // The name of the axis | |
public float axisValue = 1; // The axis that the value has | |
public float responseSpeed = 3; // The speed at which the axis touch button responds | |
public float returnToCentreSpeed = 3; // The speed at which the button will return to its centre | |
AxisTouchButton m_PairedWith; // Which button this one is paired with | |
CrossPlatformInputManager.VirtualAxis m_Axis; // A reference to the virtual axis as it is in the cross platform input | |
void OnEnable() | |
{ | |
if (!CrossPlatformInputManager.AxisExists(axisName)) | |
{ | |
// if the axis doesnt exist create a new one in cross platform input | |
m_Axis = new CrossPlatformInputManager.VirtualAxis(axisName); | |
CrossPlatformInputManager.RegisterVirtualAxis(m_Axis); | |
} | |
else | |
{ | |
m_Axis = CrossPlatformInputManager.VirtualAxisReference(axisName); | |
} | |
FindPairedButton(); | |
} | |
void FindPairedButton() | |
{ | |
// find the other button witch which this button should be paired | |
// (it should have the same axisName) | |
var otherAxisButtons = FindObjectsOfType(typeof(AxisTouchButton)) as AxisTouchButton[]; | |
if (otherAxisButtons != null) | |
{ | |
for (int i = 0; i < otherAxisButtons.Length; i++) | |
{ | |
if (otherAxisButtons[i].axisName == axisName && otherAxisButtons[i] != this) | |
{ | |
m_PairedWith = otherAxisButtons[i]; | |
} | |
} | |
} | |
} | |
void OnDisable() | |
{ | |
// The object is disabled so remove it from the cross platform input system | |
m_Axis.Remove(); | |
} | |
public void OnPointerDown(PointerEventData data) | |
{ | |
if (m_PairedWith == null) | |
{ | |
FindPairedButton(); | |
} | |
// update the axis and record that the button has been pressed this frame | |
m_Axis.Update(Mathf.MoveTowards(m_Axis.GetValue, axisValue, responseSpeed * Time.deltaTime)); | |
} | |
public void OnPointerUp(PointerEventData data) | |
{ | |
m_Axis.Update(Mathf.MoveTowards(m_Axis.GetValue, 0, responseSpeed * Time.deltaTime)); | |
} | |
} | |
} |