前提・実現したいこと
上図の温度表示ラジアルスライダーを回転させた時に、音が鳴るようにしたいです。
上図のUIは薄青色のハンドルが回転するようになっています。
音は0.5℃回転させる毎にカチッとなり、ハンドルを回すとカチカチカチッと鳴るように、単一の音を連続させたいと思っています。
下がラジアルスライダーのスクリプトで、図の薄青色のハンドルのオブジェクトにアタッチしています。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class PointCircle4 : MonoBehaviour, IDragHandler { [Range(0f, 1f)] public float value; public float radius; public float min; public float max; public TemperatureText temperatureText; RectTransform rectTransfrom; Vector2 parentPosition; public void Start() { rectTransfrom = GetComponent<RectTransform>(); parentPosition = rectTransfrom.parent.transform.position; } public void OnDrag(PointerEventData data) { var diff = new Vector2(data.position.x - parentPosition.x, data.position.y - parentPosition.y); float radian = Mathf.Atan2(diff.y, diff.x); if (radian < -Mathf.PI / 2f) { radian += Mathf.PI * 2f; } radian = Mathf.Clamp(radian, min, max); value = 1f - Mathf.InverseLerp(min, max, radian); } public void SetValue(float value) { this.value = value; } public void Update() { float radian = Mathf.Lerp(min, max, 1 - value); //rectTransfrom.localPosition = new Vector2(Mathf.Cos(radian), Mathf.Sin(radian)) * radius; Vector3 dir = new Vector2(Mathf.Cos(radian), Mathf.Sin(radian)); rectTransfrom.localPosition = dir * radius; rectTransfrom.localRotation = Quaternion.LookRotation(Vector3.forward, dir); temperatureText.value = value; } }
音は、オブジェクトにAudioSourceを付けるとして、どうすればスライダーが回転した時に音が鳴るように出来るのでしょうか。
補足情報(FW/ツールのバージョンなど)
今回の動作は、Uduinoを介して可変抵抗で動かします。
スクリプトの下記部分は、そのイベント関数に関連する物だと思います。
public void SetValue(float value)
{
this.value = value;
}
あなたの回答
tips
プレビュー