关于在Monogame中开发游戏,我有一个简单的问题。
假设我有一个UFO作为可以移动的对象。我的UFO有时会不时在他站立的位置下方的地面(紫色圆圈)中产生一个洞。
完成此操作后,UFO可以再次自由飞行。但是,当我想越过刚刚生成的孔时,我发现圆圈比我的UFO高。它不会飞过孔,而是会夹在孔下。
有什么方法可以使UFO对象始终位于前景上或可能在UFO后面产生孔?
增加漏洞的主要游戏:
Components.Add(new Hole(this, holeTexture,
hero.HolePosition));
孔对象的绘制功能:
public override void Draw(GameTime gameTime)
{
SpriteBatch sBatch =
(SpriteBatch)Game.Services.GetService(typeof(SpriteBatch));
sBatch.Draw(texture, position, Color.White);
base.Draw(gameTime);
}
英雄(UFO)对象中的函数,用于定义孔的位置:
public Vector2 HolePosition //nodig om gaten te graven (startpos.)
{
get { return new Vector2(position.X + (WIDTH / 2), position.Y + HEIGHT); }
}
问题图片:
最佳答案
如果Hole和UFO是DrawableGameComponent对象,则它们似乎具有内置的绘制顺序:
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.drawablegamecomponent.draworder.aspx
public int DrawOrder { get; set; }
绘制组件的顺序。
因此,您的原始代码将变成这样:
Hole MyHole = new Hole(this, holeTexture, hero.HolePosition);
MyHole.DrawOrder = 1;
Components.Add(MyHole);
只需确保在创建UFO时执行相同的操作,并为其提供一个DrawOrder值即可将其绘制在黑洞的顶部(我不确定它是否应大于或小于MyHole.DrawOrder;请尝试同时查看两者作品)。