繁体   English   中英

Sprite Kit设置节点角度(不旋转)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM