这是我的代码
healthBarPosition = new Vector2(0, 550);
public Texture2D healthGaugeTexture;
public Texture2D healthBarTexture;
public Texture2D healthGaugeTexture;
public int maxHealth;
public int currentHealth = 500;
加载方法;
healthGaugeTexture = Content.Load<Texture2D>("HealthBar Gauge");
healthBarTexture = Content.Load<Texture2D>("Health Bar");
在绘制方法中;
spriteBatch.Draw(healthGaugeTexture, healthBarPosition, Color.White);
spriteBatch.Draw(healthBarTexture, healthBarPosition, Color.White)
这会在Health Gauge中绘制完整健康状况栏。
我试过
spriteBatch.Draw(healthBarTexture, healthBarPosition,
new Rectangle((int)healthBarPosition.X, (int)healthBarPosition.Y,
currentHealth, healthBarTexture.Width),
Color.White);
或
spriteBatch.Draw(healthBarTexture, healthBarPosition,
new Rectangle((int)healthBarPosition.X, (int)healthBarPosition.Y,0,0),
Color.White);`
什么时候是这样的,它只是没有健康栏的健康指标......酒吧就在众神腿后面... xD我不知道Source Rectange在哪里或我在哪里设置它。
我也试过
https://www.youtube.com/watch?v=C9ldaOGjePE
与此视频相同,
Maxhealth = healthBarTexture.width;
给我错误,所以我删除了评论并且有效。
我想要的是使用设置的健康值绘制完整的健康状况,即:Current health = 100;
但健康栏已满,我可以使用Rectangle绘制,问题是我现在知道如何使用源矩形和放置它
答案 0 :(得分:1)
您只需要使用剪裁矩形进行绘制。
SpriteBatch.Draw
有许多重载,允许您设置源矩形和目标矩形。继承人一:(MSDN)
通过缩小源和目标矩形,您将给出“可变长度”健康栏的错觉。您可能希望修复“左”属性,并缩小或增大每个矩形的“宽度”属性以获得效果。
设置源矩形时,请小心将其设置为不使纹理“关闭”。尝试解释当我说源矩形可以“关闭”纹理时我的意思,请考虑以下图像:
绿色矩形是纹理的“关闭”,类似于您发布的代码可能发生的情况。青色矩形是您想要发生的事情。