我正试图以高速画出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();
}
}
答案 0 :(得分:0)
这可能是低帧率的假象。帧速率越高,你的大脑记录子弹的运动"只是在多个不断变化的位置绘制相同的图像:)
答案 1 :(得分:0)
如上所述,痕迹可能在你眼中,而不是在屏幕上。如果你想克服这个效果,你可能想跳过一些帧(可能完全从屏幕上移除子弹或至少跳过移动)。