为SKSpriteNode绘制轨迹线

时间:2014-12-24 00:12:05

标签: sprite-kit

我有一个自定义的LineBall类,如下所示:

@implementation LineBall

-(instancetype) init {

    self = [super initWithImageNamed:LINE_BALL_IMAGE];

    self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.size.width/2];
    self.physicsBody.categoryBitMask = BBPhysicsCategoryLineBall;

    self.name = @"lineBall";

    self.physicsBody.friction = 0.0f;
    self.physicsBody.restitution = 1.0f;
    self.physicsBody.linearDamping = 0.0f;
    self.physicsBody.allowsRotation = NO;
    self.physicsBody.dynamic = YES;

    return self;
}

稍后我将它添加到GameScene并按预期工作。问题是现在我想在LineBall旅行的任何地方画线。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

这是在移动球后面画一条小道的一种方法。

didSimulatePhysics方法中:

  1. 将球的位置随时间以可变阵列存放。在index = 0处插入。
  2. 如果元素数量超过最大跟踪大小
  3. ,则删除最旧的(最后一个)数组元素
  4. 通过使用CGPath循环遍历数组元素来创建可变CGPathAddLineToPoint以连接每个点
  5. 从场景中删除旧路径(如果存在)
  6. 使用SKShapeNode
  7. 从路径创建shapeNodeWithPath来创建球的路径
  8. SKShapeNode添加到场景