健康酒吧XNA C#

时间:2014-09-03 17:14:50

标签: c# xna

这是我的代码

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绘制,问题是我现在知道如何使用源矩形和放置它

1 个答案:

答案 0 :(得分:1)

您只需要使用剪裁矩形进行绘制。

SpriteBatch.Draw有许多重载,允许您设置源矩形和目标矩形。继承人一:(MSDN

通过缩小源和目标矩形,您将给出“可变长度”健康栏的错觉。您可能希望修复“左”属性,并缩小或增大每个矩形的“宽度”属性以获得效果。

设置源矩形时,请小心将其设置为不使纹理“关闭”。尝试解释当我说源矩形可以“关闭”纹理时我的意思,请考虑以下图像:

enter image description here

绿色矩形是纹理的“关闭”,类似于您发布的代码可能发生的情况。青色矩形是您想要发生的事情。