关于在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;请尝试同时查看两者作品)。

10-06 13:31