2014-06-01 5 views
0

Я пытаюсь настроить панель здоровья для 2D-игры с использованием OnGUI. У меня есть внешняя текстура и внутренняя текстура для счетчика. Настройка, которую я сейчас выполняю, частично. Я могу изменить масштаб внутреннего измерителя, так что он выглядит так, как будто он истощается, однако положение вдоль x также меняется. Это вызывает неудобный эффект, а также измеритель, перемещающийся вне его контейнера.OnGUI Health Bar Scaling

void Update() { 
     score = EnemyScript.killCount * 100; 
     powerScale -= 1; 
    } 

    void OnGUI(){ 
     //Score and Power Containter 
     GUILayout.BeginArea(new Rect(Screen.width/8, Screen.height/8, 500, 200)); 
     GUILayout.Label("Score: " + score, style); 
     GUI.DrawTexture(new Rect(-10,20,200,80),powerBoundry); 
     GUILayout.EndArea(); 
     //Power Meter 
     GUILayout.BeginArea(new Rect(Screen.width/8, Screen.height/8, 450, 200)); 
     GUI.DrawTexture(new Rect(-10,20,powerScale,80),powerFill, ScaleMode.ScaleAndCrop); 
     GUILayout.EndArea(); 
    } 
+0

Можно ли зафиксировать его на месте? Или, возможно, сделать это ребенком игрового объекта, чтобы привязать его? любая помощь будет оценена по достоинству. – user1569940

ответ

1

попробуйте использовать DrawTextureWithTexCoords.

void OnGUI() 
{ 
    GUILayout.BeginArea(new Rect(Screen.width/8, Screen.height/8, 500, 200)); 
    GUI.DrawTexture(new Rect(-10, 20, 200, 80), powerBoundry); 
    GUI.DrawTextureWithTexCoords(new Rect(-10, 20, powerScale, 80), powerFill, new Rect(0f, 0f, (float)powerScale/200f, 1f)); 
    GUILayout.EndArea(); 
}