Files
ScienceLab.WeightAndMass/Assets/Scripts/KnobController.cs
2026-04-07 03:14:32 +03:00

56 lines
1.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class KnobController : MonoBehaviour
{
[SerializeField] private MassController _massController;
[SerializeField] private float _rotationDuration = 0.3f;
[SerializeField] private Vector3[] _positions;
private int _currentIndex = 0;
private bool _isRotating = false;
private void OnMouseDown()
{
if (_isRotating) return;
RotateToNextPosition();
if (_massController != null)
_massController.SwitchUnit();
}
private void RotateToNextPosition()
{
_currentIndex++;
if (_currentIndex >= _positions.Length)
_currentIndex = 0;
StartCoroutine(RotateTo(_positions[_currentIndex]));
}
private IEnumerator RotateTo(Vector3 targetEuler)
{
_isRotating = true;
Quaternion start = transform.rotation;
Quaternion end = Quaternion.Euler(targetEuler);
float time = 0f;
while (time < _rotationDuration)
{
time += Time.deltaTime;
float t = time / _rotationDuration;
transform.rotation = Quaternion.Slerp(start, end, t);
yield return null;
}
transform.rotation = end;
_isRotating = false;
}
}