- Home /
Rotating a Rotated GUI Texture
Hello Everyone!!
How can I rotate this like one single GUI object?
I made a script that show 3 GUI textures in a triangle formation
This is the script:
var barFrame : Texture2D;
var shieldBar : Texture2D;
var healthBar : Texture2D;
var energyBar : Texture2D;
var rotationPerSecond : float = 10;
private var cam : Camera;
private var centralPoint : Vector2;
private var currentPosition : Rect;
private var barOffset : float;
private var shieldRect : Rect;
private var energyRect : Rect;
private var healthRect : Rect;
private var style : GUIStyle;
function Start(){
cam = Camera.main;
style = new GUIStyle();
style.normal.textColor = Color.white;
style.alignment = TextAnchor.MiddleCenter;
rotationFromZero = 0;
}
function Update(){
var b : Bounds = renderer.bounds;
// -- CENTRAL POSITION
centralPoint = cam.WorldToScreenPoint(b.center);
centralPoint.y = Screen.height - centralPoint.y;
currentPosition = CenterRect(centralPoint, barFrame.width, barFrame.height);
barOffset = barFrame.width * 0.25;
shieldRect = currentPosition;
shieldRect.x -= barOffset;
shieldRect.y -= (barOffset -10);
energyRect = currentPosition;
energyRect.x += barOffset;
energyRect.y -= (barOffset - 10);
healthRect = currentPosition;
healthRect.y += barOffset;
}
function OnGUI(){
DrawRotatedBar(shieldBar, 300, shieldRect, "Shield");
DrawRotatedBar(energyBar, 60, energyRect, "Energy");
DrawRotatedBar(healthBar, 0, healthRect, "Health");
}
private function DrawRotatedBar(bar : Texture2D, rotation : int, pos : Rect, label : String){
var matrixBackup : Matrix4x4 = GUI.matrix;
GUIUtility.RotateAroundPivot(rotation, pos.center);
GUI.DrawTexture(pos, bar);
GUI.DrawTexture(pos, barFrame);
GUI.Label(pos, label, style);
GUI.matrix = matrixBackup;
}
private function CenterRect(pos : Vector2, w : float, h : float) : Rect{
return Rect(pos.x - (w 0.5), pos.y - (h 0.5), w, h);
}
The problem is: How can I rotate all like a unique triangle with pivot in center position? This is not working:
function OnGUI(){
var m : Matrix4x4 = GUI.matrix;
GUIUtility.RotateAroundPivot(newRotationAssignedInUpdate, currentPosition.center);
DrawRotatedBar(shieldBar, 300, shieldRect, "Shield");
DrawRotatedBar(energyBar, 60, energyRect, "Energy");
DrawRotatedBar(healthBar, 0, healthRect, "Health");
GUI.matrix = m;
}
Ps. sorry for my english, I'm Italian..
@Edit: Sorry, I forgot: The textures must be drawn separated because they will have separated values (I'll resize it with GUI.BeginGroup)
Your answer
Follow this Question
Related Questions
Rotating GUI Texture By Angle 2 Answers
Limit GUI Rotation? 2 Answers
Help with understanding UV's in script created mesh 0 Answers
unity make a skin/texture to a character like the robot from the fps tutorial 1 Answer
iTween and texture problem 0 Answers