我想知道如何創建HUD。 我目前擁有在設定的座標處繪製到屏幕上的健康,法力和體驗欄。這一點的不足之處在於,當照相機將酒吧保持在設定的座標位置時,我希望他們調整到視口或不受位置的影響,而只是簡單地畫到屏幕上。XNA C#創建擡頭顯示器
編輯 我設法讓HUD使用相機的X和Y座標進行調整。 我已經創建了一個單獨的類來繪製HUD,但現在它們不調整。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using GameOne.Components; namespace GameOne.GameScreens { public class HUD : BaseGameState { Player player; Texture2D HealthBar; Texture2D HealthBarPositive; Texture2D HealthBarNegative; Texture2D ManaBar; Texture2D ManaBarPositive; Texture2D ManaBarNegative; Texture2D ExpBar; Texture2D ExpBarPositive; int CurrentHealth = 100; int CurrentMana = 45; int CurrentExp = 0; public HUD(Game game, GameStateManager manager) : base(game, manager) { player = new Player(game); } public void LoadContent() { base.LoadContent(); HealthBar = Game.Content.Load<Texture2D>(@"GUI\healthBar"); HealthBarPositive = Game.Content.Load<Texture2D>(@"GUI\healthBarPositive"); HealthBarNegative = Game.Content.Load<Texture2D>(@"GUI\healthBarNegative"); ManaBar = Game.Content.Load<Texture2D>(@"GUI\manaBar"); ManaBarPositive = Game.Content.Load<Texture2D>(@"GUI\manaBarPositive"); ManaBarNegative = Game.Content.Load<Texture2D>(@"GUI\manaBarNegative"); ExpBar = Game.Content.Load<Texture2D>(@"GUI\expBar"); ExpBarPositive = Game.Content.Load<Texture2D>(@"GUI\expBarPositive"); } public void Update(GameTime gameTime) { if (InputHandler.KeyDown(Keys.F1)) { CurrentHealth += 1; } if (InputHandler.KeyDown(Keys.F2)) { CurrentHealth -= 1; } if (InputHandler.KeyDown(Keys.F3)) { CurrentMana += 1; } if (InputHandler.KeyDown(Keys.F4)) { CurrentMana -= 1; } if (InputHandler.KeyDown(Keys.F5)) { CurrentExp += 1; } if (InputHandler.KeyDown(Keys.F6)) { CurrentExp -= 1; } CurrentHealth = (int)MathHelper.Clamp(CurrentHealth, 0, 100); CurrentMana = (int)MathHelper.Clamp(CurrentMana, 0, 45); CurrentExp = (int)MathHelper.Clamp(CurrentExp, 0, 500); } public void Draw(GameTime gameTime) { GameRef.SpriteBatch.Draw( HealthBarNegative, new Rectangle((int)player.Camera.Position.X + 150, (int)player.Camera.Position.Y + 630, 150, 15), Color.White); GameRef.SpriteBatch.Draw( HealthBarPositive, new Rectangle((int)player.Camera.Position.X + 150, (int)player.Camera.Position.Y + 630, 150 * (int)CurrentHealth/100, 15), Color.White); GameRef.SpriteBatch.Draw( HealthBar, new Rectangle((int)player.Camera.Position.X + 150, (int)player.Camera.Position.Y + 630, 150, 15), Color.White); GameRef.SpriteBatch.Draw( ManaBarNegative, new Rectangle((int)player.Camera.Position.X + 150, (int)player.Camera.Position.Y + 650, 150, 15), Color.White); GameRef.SpriteBatch.Draw( ManaBarPositive, new Rectangle((int)player.Camera.Position.X + 150, (int)player.Camera.Position.Y + 650, 150 * (int)CurrentMana/45, 15), Color.White); GameRef.SpriteBatch.Draw( ManaBar, new Rectangle((int)player.Camera.Position.X + 150, (int)player.Camera.Position.Y + 650, 150, 15), Color.White); GameRef.SpriteBatch.Draw( ExpBarPositive, new Rectangle((int)player.Camera.Position.X + 10, (int)player.Camera.Position.Y + 680, 1260 * (int)CurrentExp/500, 15), Color.White); GameRef.SpriteBatch.Draw( ExpBar, new Rectangle((int)player.Camera.Position.X + 10, (int)player.Camera.Position.Y + 680, 1260, 15), Color.White); } } }
相機平底鍋時更新座標有什麼問題? – mrduclaw