如何使节点围绕spritekit游戏项目中的点(CGPoint)旋转

时间:2014-03-03 13:11:02

标签: rotation sprite-kit

众所周知,默认的旋转动作围绕节点的中心点旋转,但如何使其围绕指定或特定点旋转?

1 个答案:

答案 0 :(得分:0)

我不喜欢使用动作,我在游戏中使一切都成为内部时间的函数,它使一切都保持一致,对于更复杂的游戏来说,这是至关重要的。

这是来自我所做的基于太空的游戏,其中行星围绕一个点旋转。

<强>解释

  • 方向:1或-1(顺时针或逆时针)
  • _model.orbitSpeed:围绕中心点移动的速度
  • _model.initialAngleInRadians:轨道的起点(因为它是时间的函数)
  • _model.orbitDistance:物体移动距离中心的距离
  • 时间:一个表示时间的整数(在我的大多数游戏中,这相当于帧,因为我总是使用固定的时间步长模型)

    self.position = CGPointMake(cos(方向*(((浮动)时间* _model.orbitSpeed)+ _ model.initialAngleRadians))* _ model.orbitDistance,sin(方向*(((float)time * _model.orbitSpeed) + _model.initialAngleRadians))* _ model.orbitDistance);

显然,您需要使用当前时间框架更新所有移动对象,我在更新方法中执行此操作。这很简单。

你可以把它归结为:self.position = CGPointMake(cos((浮动)时间)* distanceFromCenter,sin((浮动)时间)* distanceFromCenter);