快速移动的物体留下了“幽灵”痕迹

时间:2016-07-16 14:32:57

标签: xna monogame

我正试图以高速画出Monogame的子弹。当我绘制它大约400px /秒“这是非常慢”但大约1500px /秒时,它开始“复制”或“重影”纹理。我对Monogame相当新,并且对Graphics没有太多的了解。

如何在不产生“重影”效果的情况下移动高速物体?

SpriteBatch开始:

 sb.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearWrap, DepthStencilState.None, RasterizerState.CullNone,
            null, Global.Camera.GetViewTransformationMatrix());

绘制方法:

public override void Draw(SpriteBatch sb)
{
        Vector2 origin = new Vector2(source.Width / 2, source.Height / 2);
        Rectangle tRect = Bounds;

         sb.Draw(
            texture: TDTGame.GameAssets.Texture,
            destinationRectangle: tRect,
            sourceRectangle: source,
            rotation: MathHelper.ToRadians(Rotation - 270f), //Set rotation to forward of the texture.
            color: Color.White,
            origin: origin,
            layerDepth: 1f
            );
}

编辑:

Youtube链接:here

子弹的运动:

    float traveledDistance;
    public override void Update(GameTime gt)
    {
        float deltaTime = (float)gt.ElapsedGameTime.TotalSeconds;
        traveledDistance += Speed * deltaTime;

        Position += Forward * Speed * deltaTime;

        if (traveledDistance > Range)
        {
            Destroy();
        }
    }

2 个答案:

答案 0 :(得分:0)

这可能是低帧率的假象。帧速率越高,你的大脑记录子弹的运动"只是在多个不断变化的位置绘制相同的图像:)

答案 1 :(得分:0)

如上所述,痕迹可能在你眼中,而不是在屏幕上。如果你想克服这个效果,你可能想跳过一些帧(可能完全从屏幕上移除子弹或至少跳过移动)。