我正在为iOS创建一款汽车驾驶游戏,但存在一个问题:
我将这些行添加到我的ViewController.m:
_carView.transform = CGAffineTransformMakeRotation(steeringTemp-45);
steeringTemp是一个浮动变量,由左右转向按钮改变。
但是当我运行应用程序并按下转向按钮时,汽车以难看的方式旋转。看起来中心点每次都在变化,汽车像三角形一样旋转。我试图将原点设置为_carView的中心,这是一个图像视图,但它不起作用。
答案 0 :(得分:4)
首先让我告诉你,你应该使用弧度,而不是度数。您可以使用此宏:
#define DEGREES_TO_RADIANS(angle) (angle * M_PI / 180.0)
并将其包裹在你的价值观中:
CGAffineTransformMakeRotation(DEGRESS_TO_RADIANS(steeringTemp-45));
如果您:
,第二次通常会出错定位点
您需要确保您的锚点指向您想要的位置。 anchorPoint默认为中心,但您可以将其设置为视图支持的图层中您喜欢的任何点。锚点具有相对坐标,因此它从0到1.(0,0)是左上角,(1,1)是你的右下角。
您可以这样设置:
_carView.layer.anchorPoint = CGPointMake(0, 0);
变换顺序很重要
此外,如果您应用更多变换,请务必注意这些变换的顺序。之前的变换将始终影响下一个变换。旋转后跟翻译与翻译后跟旋转不同。