58 lines
1.5 KiB
C#
58 lines
1.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class RadialTouchManager : MonoBehaviour
|
|
{
|
|
[SerializeField] private Transform Hand;
|
|
[SerializeField] private Transform TriggerTransform;
|
|
[SerializeField] private Transform FrontCircle;
|
|
[SerializeField] private Transform BackCircle;
|
|
[SerializeField] private Transform Center;
|
|
private float FBScaleDiff = 0f;
|
|
private float TriggerDistance = 1f;
|
|
private float MaxDistance = 2f;
|
|
private float ZPosition = 0f;
|
|
|
|
void Start()
|
|
{
|
|
FBScaleDiff = FrontCircle.localScale.x - BackCircle.localScale.x;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
TriggerTransform.position = Hand.position;
|
|
SetCenterPosition();
|
|
SetMaxDistance();
|
|
|
|
}
|
|
private void SetCenterPosition()
|
|
{
|
|
ZPosition = Mathf.Clamp(TriggerTransform.localPosition.z, -0.5f, 0.5f);
|
|
Center.localPosition = new Vector3(
|
|
Center.localPosition.x,
|
|
Center.localPosition.x,
|
|
ZPosition
|
|
);
|
|
|
|
}
|
|
|
|
private void SetMaxDistance()
|
|
{
|
|
TriggerDistance = 1 - FBScaleDiff * (ZPosition + 0.5f);
|
|
Center.localScale = new Vector3(
|
|
TriggerDistance,
|
|
TriggerDistance,
|
|
TriggerDistance
|
|
);
|
|
}
|
|
|
|
private bool IsInRange(Vector3 position)
|
|
{
|
|
if (position.z < BackCircle.localPosition.z && position.z > FrontCircle.localPosition.z)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
}
|