- Home /
Scale Car Speedometer with Screen Size (made by Andeeee)
I find a great Car Speedometer prefab on the Unity 3D forum, made by the administrator, Andeeee.
The thread URL:
http://forum.unity3d.com/threads/63885-Car-speedometer-dial
It works great (thanks to Andeeee), but it will not resize automatically if the screen size changes.
On the forum thread, a guy posted a code to do this, but the needle disappears.
The original code:
How to scale the speedometer automatically if the screen size changes?
in the same thread where u got the script there u can find what u r looking for. read guys
Answer by lasha_an · Aug 17, 2012 at 07:24 PM
the answer acctuially is:
var dialTex: Texture2D;
var needleTex: Texture2D;
var dialPos: Vector2;
var topSpeed: float;
var stopAngle: float;
var topSpeedAngle: float;
var speed: float;
dialPos.x = 0;
dialPos.y = Screen.height - dialTex.height;
function OnGUI() {
GUI.DrawTexture(Rect(dialPos.x, dialPos.y, dialTex.width, dialTex.height), dialTex);
var centre = Vector2(dialPos.x + dialTex.width / 2, dialPos.y + dialTex.height / 2);
var savedMatrix = GUI.matrix;
var speedFraction = speed / topSpeed;
var needleAngle = Mathf.Lerp(stopAngle, topSpeedAngle, speedFraction);
GUIUtility.RotateAroundPivot(needleAngle, centre);
GUI.DrawTexture(Rect(centre.x, centre.y - needleTex.height / 2, needleTex.width, needleTex.height), needleTex);
GUI.matrix = savedMatrix;
}
function Update() {
speed = Vector3.Dot(rigidbody.velocity, transform.forward);
}
function ForwardSpeed() {
return Vector3.Dot(rigidbody.velocity, transform.forward);
}
thx Mander.
Your answer
![](https://koobas.hobune.stream/wayback/20220613073512im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
texCoords rect for GUI.DrawTextureWithTexCoords 3 Answers
Problem moving a Rect 1 Answer
Rotating a Rect by the GUI.matrix? 0 Answers
What Is Lighter GameObject or Rect 1 Answer