[英]Sprite Kit setting a nodes angle (not rotate)
好吧,所以我有一个游戏,玩家(太空飞船)试图绕行星,但如果它关闭,玩家的太空船将转向行星。
所以我想尝试使用:
float dx = [_player position].x - [planetNodes[i] position].x;
float dy = [_player position].y - [planetNodes[i] position].y;
double angleToTurn = (180.0 / M_PI) * atan2(dy, dx);
NSLog(@"Turn to: %f", angleToTurn);
_player.zRotation = angleToTurn;
此代码放在场景的更新方法中。 每当玩家离行星太近时它开始旋转,因为我使用的是旋转方法。 有没有像setAngle这样的方法? 这样,每当调用更新时,它将重置角度,实际上看起来玩家正朝着行星移动。
您正在使用zRotation
属性。 设置该属性将产生所需的效果,问题是当你给它弧度时,你给_player.zRotation
一个度数 。 当玩家接近行星时,角度会发生变化,并且玩家的旋转速度比应该的速度快180 / pi,因为您将角度乘以该角度。
你想要的是:
angleToTurn = atan2(dy,dx);
代替
angleToTurn = (180.0 / M_PI) * atan2(dy,dx);
使旋转角度使用
[_player runAction:[SKAction rotateToAngle:atan2(dy, dx) duration:0.0 shortestUnitArc:YES]]
精灵运动将动画,看起来更好,然后设置zRotation。
注意:该函数采用弧度,因此无需转换为度数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.