- Home /
Question by
DejectedAxe47 · Aug 27, 2013 at 06:46 PM ·
c#timeclock
Help with a faster clock?
I just made a clock that keeps real time but I want to know how to make the clock faster Here's the script:
using UnityEngine;
using System;
public class ClockAnimator : MonoBehaviour {
private const float
hoursToDegrees = 360f / 12f,
minutesToDegrees = 360f / 60f,
secondsToDegrees = 360f / 60f;
public bool Analog;
public Transform Hour, Minute, Second;
void Update () {
if(Analog) {
TimeSpan timespan = DateTime.Now.TimeOfDay;
Hour.localRotation =
Quaternion.Euler(0f,0f,(float)timespan.TotalHours * -hoursToDegrees);
Minute.localRotation =
Quaternion.Euler(0f,0f,(float)timespan.TotalMinutes * -minutesToDegrees);
Second.localRotation =
Quaternion.Euler(0f,0f,(float)timespan.TotalSeconds * -secondsToDegrees);
}
else {
DateTime time = DateTime.Now;
Hour.localRotation = Quaternion.Euler (0f,0f,time.Hour * -hoursToDegrees);
Minute.localRotation = Quaternion.Euler (0f,0f,time.Minute * -minutesToDegrees);
Second.localRotation = Quaternion.Euler (0f,0f,time.Second * -secondsToDegrees);
}
}
}
Comment
Best Answer
Answer by robertbu · Aug 27, 2013 at 08:38 PM
Here is a quick a hack to get you started. Set 'fractionAdd' to 1.0 to run twice as fast (i.e. for every real second, it add a full second).
using UnityEngine;
using System;
public class ClockAnimator : MonoBehaviour {
private const float
hoursToDegrees = 360f / 12f,
minutesToDegrees = 360f / 60f,
secondsToDegrees = 360f / 60f;
public bool Analog;
public Transform Hour, Minute, Second;
public float fractionAdd = 1.0f;
private float timerAdd = 0.0f;
void Update () {
timerAdd += Time.deltaTime * fractionAdd;
TimeSpan timespan = DateTime.Now.TimeOfDay;
timespan += new TimeSpan((long)timerAdd * TimeSpan.TicksPerSecond);
if(Analog) {
Hour.localRotation =
Quaternion.Euler(0f,0f,(float)timespan.TotalHours * -hoursToDegrees);
Minute.localRotation =
Quaternion.Euler(0f,0f,(float)timespan.TotalMinutes * -minutesToDegrees);
Second.localRotation =
Quaternion.Euler(0f,0f,(float)timespan.TotalSeconds * -secondsToDegrees);
}
else {
DateTime time = new DateTime(timespan.Ticks);
Hour.localRotation = Quaternion.Euler (0f,0f,time.Hour * -hoursToDegrees);
Minute.localRotation = Quaternion.Euler (0f,0f,time.Minute * -minutesToDegrees);
Second.localRotation = Quaternion.Euler (0f,0f,time.Second * -secondsToDegrees);
}
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Accelerate/Decelerate Custom Game Clock 2 Answers
C# Make something happen for X amount of Seconds. 2 Answers
Find time value between two other time values? C# 2 Answers
Pause Game When Function Is Enabled? 3 Answers