Quantcast
Channel: Answers by "ThePersister"
Viewing all articles
Browse latest Browse all 99

Answer by ThePersister

$
0
0
Hey @Czar-Man, I upgraded the package for you! This was actually quite a bit tougher than I thought! **Preview:** https://gyazo.com/3cbbd5e7615946210b4a4e37fc31ade2 **Updated Package:** https://www.dropbox.com/s/q0rrntk361wreot/ClockExample_V2.unitypackage?dl=0 Changelist: + Now able to set custom time. + Now able to set seconds, minutes and hours individually. + Now able to increment custom time with X seconds, minutes and hours. + Now able to set time amplifier that speeds up custom time! (also works with negative values) + Now debugs current time, remove it if you wish. + Now takes looping into consideration when incrementing / setting time. Original tutorial as from OP. (for other users) https://unity3d.com/learn/tutorials/topics/scripting/simple-clock using UnityEngine; using System; public class ClockAnimator : MonoBehaviour { private const float hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; public Transform hours, minutes, seconds; public bool analog = true; // Smooth == true, Rigid TickTock == false. [Header("Custom Time")] public bool useCustomTime = true; public float m_timeAmplifier = 20f; public DayCycle m_customTime = new DayCycle(); [Serializable] public class DayCycle { [SerializeField] private float m_hours = 7, m_minutes = 5, m_seconds = 23; public float Hours { get { return m_hours; } set { m_hours = Mathf.Repeat( value, 24.0f ); } } public float Minutes { get { return m_minutes; } set { m_minutes = Mathf.Repeat( value, 60.0f ); } } public float Seconds { get { return m_seconds; } set { m_seconds = Mathf.Repeat( value, 60.0f ); } } private const float m_hourInSeconds = 3600.0f, m_minuteInSeconds = 60.0f; public void AddSeconds(float durationInSeconds) { Hours += durationInSeconds / m_hourInSeconds; Minutes += durationInSeconds / m_minuteInSeconds; Seconds += durationInSeconds; } public void AddMinutes(float durationInMinutes) { AddSeconds( durationInMinutes * m_minuteInSeconds ); } public void AddHours( float durationInHours ) { AddSeconds( durationInHours * m_hourInSeconds ); } } void Update() { if( useCustomTime ) { m_customTime.AddSeconds( Time.deltaTime * m_timeAmplifier ); Debug.LogFormat( "{0};{1};{2}", m_customTime.Hours.ToString( "00" ), m_customTime.Minutes.ToString( "00" ), m_customTime.Seconds.ToString( "00" ) ); if( analog ) { hours.localRotation = Quaternion.Euler( 0f, 0f, m_customTime.Hours * -hoursToDegrees ); minutes.localRotation = Quaternion.Euler( 0f, 0f, m_customTime.Minutes * -minutesToDegrees ); seconds.localRotation = Quaternion.Euler( 0f, 0f, m_customTime.Seconds * -secondsToDegrees ); } else { hours.localRotation = Quaternion.Euler( 0f, 0f, Mathf.RoundToInt( m_customTime.Hours ) * -hoursToDegrees ); minutes.localRotation = Quaternion.Euler( 0f, 0f, Mathf.RoundToInt( m_customTime.Minutes ) * -minutesToDegrees ); seconds.localRotation = Quaternion.Euler( 0f, 0f, Mathf.RoundToInt( m_customTime.Seconds ) * -secondsToDegrees ); } } else { if( analog ) { TimeSpan timespan = DateTime.Now.TimeOfDay; hours.localRotation = Quaternion.Euler( 0f, 0f, ( float )timespan.TotalHours * -hoursToDegrees ); minutes.localRotation = Quaternion.Euler( 0f, 0f, ( float )timespan.TotalMinutes * -minutesToDegrees ); seconds.localRotation = Quaternion.Euler( 0f, 0f, ( float )timespan.TotalSeconds * -secondsToDegrees ); } else { DateTime time = DateTime.Now; hours.localRotation = Quaternion.Euler( 0f, 0f, time.Hour * -hoursToDegrees ); minutes.localRotation = Quaternion.Euler( 0f, 0f, time.Minute * -minutesToDegrees ); seconds.localRotation = Quaternion.Euler( 0f, 0f, time.Second * -secondsToDegrees ); } DateTime currentTime = DateTime.Now; Debug.LogFormat( "{0};{1};{2}", currentTime.Hour.ToString( "00" ), currentTime.Minute.ToString( "00" ), currentTime.Second.ToString( "00" ) ); } } } To set the time, just use: // For Time Setting. m_customTime.Minutes = 30f; // For Time Adding. m_customTime.AddSeconds( 40f ); I hope that's what you're looking for. If it is, please accept this answer, this time forever! And have a nice day! :)

Viewing all articles
Browse latest Browse all 99

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>