Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/Rewired/Demos/TouchControls1_ManipulateCube.cs
2026-03-04 10:03:45 +08:00

129 lines
3.7 KiB
C#

using UnityEngine;
namespace Rewired.Demos
{
[AddComponentMenu("")]
public class TouchControls1_ManipulateCube : MonoBehaviour
{
public float rotateSpeed = 1f;
public float moveSpeed = 1f;
private int currentColorIndex;
private Color[] colors = new Color[4]
{
Color.white,
Color.red,
Color.green,
Color.blue
};
private void OnEnable()
{
if (ReInput.isReady)
{
Player player = ReInput.players.GetPlayer(0);
if (player != null)
{
player.AddInputEventDelegate(OnMoveReceivedX, UpdateLoopType.Update, InputActionEventType.AxisActive, "Horizontal");
player.AddInputEventDelegate(OnMoveReceivedX, UpdateLoopType.Update, InputActionEventType.AxisInactive, "Horizontal");
player.AddInputEventDelegate(OnMoveReceivedY, UpdateLoopType.Update, InputActionEventType.AxisActive, "Vertical");
player.AddInputEventDelegate(OnMoveReceivedY, UpdateLoopType.Update, InputActionEventType.AxisInactive, "Vertical");
player.AddInputEventDelegate(OnCycleColor, UpdateLoopType.Update, InputActionEventType.ButtonJustPressed, "CycleColor");
player.AddInputEventDelegate(OnCycleColorReverse, UpdateLoopType.Update, InputActionEventType.ButtonJustPressed, "CycleColorReverse");
player.AddInputEventDelegate(OnRotationReceivedX, UpdateLoopType.Update, InputActionEventType.AxisActive, "RotateHorizontal");
player.AddInputEventDelegate(OnRotationReceivedX, UpdateLoopType.Update, InputActionEventType.AxisInactive, "RotateHorizontal");
player.AddInputEventDelegate(OnRotationReceivedY, UpdateLoopType.Update, InputActionEventType.AxisActive, "RotateVertical");
player.AddInputEventDelegate(OnRotationReceivedY, UpdateLoopType.Update, InputActionEventType.AxisInactive, "RotateVertical");
}
}
}
private void OnDisable()
{
if (ReInput.isReady)
{
Player player = ReInput.players.GetPlayer(0);
if (player != null)
{
player.RemoveInputEventDelegate(OnMoveReceivedX);
player.RemoveInputEventDelegate(OnMoveReceivedY);
player.RemoveInputEventDelegate(OnCycleColor);
player.RemoveInputEventDelegate(OnCycleColorReverse);
player.RemoveInputEventDelegate(OnRotationReceivedX);
player.RemoveInputEventDelegate(OnRotationReceivedY);
}
}
}
private void OnMoveReceivedX(InputActionEventData data)
{
OnMoveReceived(new Vector2(data.GetAxis(), 0f));
}
private void OnMoveReceivedY(InputActionEventData data)
{
OnMoveReceived(new Vector2(0f, data.GetAxis()));
}
private void OnRotationReceivedX(InputActionEventData data)
{
OnRotationReceived(new Vector2(data.GetAxis(), 0f));
}
private void OnRotationReceivedY(InputActionEventData data)
{
OnRotationReceived(new Vector2(0f, data.GetAxis()));
}
private void OnCycleColor(InputActionEventData data)
{
OnCycleColor();
}
private void OnCycleColorReverse(InputActionEventData data)
{
OnCycleColorReverse();
}
private void OnMoveReceived(Vector2 move)
{
base.transform.Translate((Vector3)move * Time.deltaTime * moveSpeed, Space.World);
}
private void OnRotationReceived(Vector2 rotate)
{
rotate *= rotateSpeed;
base.transform.Rotate(Vector3.up, 0f - rotate.x, Space.World);
base.transform.Rotate(Vector3.right, rotate.y, Space.World);
}
private void OnCycleColor()
{
if (colors.Length != 0)
{
currentColorIndex++;
if (currentColorIndex >= colors.Length)
{
currentColorIndex = 0;
}
GetComponent<Renderer>().material.color = colors[currentColorIndex];
}
}
private void OnCycleColorReverse()
{
if (colors.Length != 0)
{
currentColorIndex--;
if (currentColorIndex < 0)
{
currentColorIndex = colors.Length - 1;
}
GetComponent<Renderer>().material.color = colors[currentColorIndex];
}
}
}
}