我正在尝试倾斜/倾斜纹理以为我的游戏创建一些阴影。我已经阅读了这个有用的答案,表明这可以通过将矩阵传递给 spriteBatch.Begin() 来完成。
因为我的线性代数技能不是很发达,所以我在达到我想要的结果时遇到了一些麻烦。我希望扭曲我的阴影,使其看起来类似于以下内容。阴影倾斜了一个角度,但阴影的底部与精灵的(在本例中为脚)底部对齐。
我最初绑定了上面解决方案中提供的倾斜矩阵:
Matrix skew = Matrix.Identity;
skew.M12 = (float)Math.Tan(MathHelper.ToRadians(36.87f));
但这最终会使阴影相对于世界的起源旋转。我看到解决方案也注意到了这一点,并提供了跟随以再次旋转精灵。
Matrix myMatrix = Matrix.CreateTranslation(-100, -100, 0)
* Matrix.CreateScale(2f, 0.5f, 1f)
* Matrix.CreateTranslation(100, 100, 0);
虽然我不确定在哪里应用这个 myMatrix 矩阵。我已经尝试将它应用于阴影精灵、铸造阴影精灵,并将它们相乘并应用于阴影,但没有成功。
我也尝试过使用其他方法Matrix.CreateRotationX(MathHelper.ToRadians(0.87f))
,比如没有运气。
实际上也有一种Matrix.CreateShadow()
方法,但它需要一个平面,而我在我的游戏中没有这种方法。
谁能帮我找出这个slanting所需的矩阵,或者指出一些资源的方向?
谢谢!