希望它允许在stackexchange站点之间“交叉”... 有谁知道如何解决以下“数学”问题?
https://gamedev.stackexchange.com/questions/5041/correct-blitting-2-surface-problem
提前致谢
答案 0 :(得分:1)
你的问题似乎是当你想要相对于实际炮塔的中心对它进行blit时,你的左上角是你的炮塔。现在,假设您的炮塔的中心位于x_1
,y_1
,顺时针旋转theta
度,应该会在x_2=x_1*cos(theta)
处为您提供一个“新”中心,{{1} }。然后,您必须将其与位于y_2=y_1*sin(theta)
的炮塔中心对齐。这不应该是一个问题(请记住,我不是很熟悉C#,所以这可能在语法上是不正确的):
13,13
Point posTurret = new Point(13 + this.X - x1*Math.cos(cannonangle),
13 + this.Y - y1*Math.sin(cannonangle));
和x1
是“y1
”中炮塔中心的坐标。
答案 1 :(得分:0)
我不是一个图形人,但我以前做过这样的事情的方式是通过使用面具然后是图像,你需要旋转和blit这两个。也就是说,你有一个黑色的炮塔状“洞”,它可以旋转和布置,以匹配你的炮塔图像所需的旋转。
另一个问题是旋转图像中的像素不会与原始图像中的像素对齐,因此您必须进行一些插值才能使其看起来正确。
我想虽然你可以使用的库可以帮你处理这些东西。