Sprite kit 绘制一个移动节点的路径

Sprite kit 绘制一个移动节点的路径,sprite-kit,cgpath,skspritenode,skshapenode,Sprite Kit,Cgpath,Skspritenode,Skshapenode,我正在尝试使用新的SKSpritenode,我已经设法创建了一个Spritenode在屏幕上移动它,尽管我希望Spritenode在移动的地方留下一个痕迹(颜色) 创建Sprite节点的代码&my尝试创建一个shapenode作为spritenode的子节点(这不起作用) 如果你有更好的解决方案,请让我知道 不要将SKShapeNode作为SKSpriteNode的子节点,而是在SKScene中将其声明为其兄弟节点 首先,将SKShapeNode和CGPath声明为实例变量 在场景的-initW

我正在尝试使用新的SKSpritenode,我已经设法创建了一个Spritenode在屏幕上移动它,尽管我希望Spritenode在移动的地方留下一个痕迹(颜色)

创建Sprite节点的代码&my尝试创建一个shapenode作为spritenode的子节点(这不起作用)


如果你有更好的解决方案,请让我知道

不要将SKShapeNode作为SKSpriteNode的子节点,而是在SKScene中将其声明为其兄弟节点

首先,将SKShapeNode和CGPath声明为实例变量

在场景的
-initWithSize:
方法中

raayyy=[[SKShapeNode alloc]init];
//Additional initialization here.

rayPath = CGPathCreateMutable();
CGPathMoveToPoint(pathToDraw, NULL, ray1.position.x, ray1.position.y);
rayyy.path = rayPath;
[self addChild:rayyy];
然后在
-update:
方法中

CGPathAddLineToPoint(rayPath, NULL, yar1.position.x, ray1.position.y);
rayyy.path = rayPath;

这只是一个建议,我从来并没有尝试过像我自己一样的东西。

好吧,我已经用一个解决方案解决了它,但到目前为止我真的不喜欢它

    -(SKShapeNode*)gravityline{
    SKShapeNode *lolo = [[SKShapeNode alloc] init];
    CGPoint fff=CGPointMake(ray1.position.x, ray1.position.y);
    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, fff.x, fff.y);
    CGPathAddLineToPoint(path, 0,rayoriginpoint.x,rayoriginpoint.y );
    CGPathCloseSubpath(path);
    lolo.path = path;
    lolo.name=@"gravityline";
    lolo.strokeColor=[SKColor greenColor];
    lolo.glowWidth=.1;
    lolo.physicsBody=[SKPhysicsBody bodyWithPolygonFromPath:path];
    lolo.physicsBody.categoryBitMask=raylightCategory;
    lolo.physicsBody.collisionBitMask=batCategory;
    lolo.physicsBody.contactTestBitMask=batCategory;
    lolo.physicsBody.dynamic=NO;
    CGPathRelease(path);

    return lolo;
}
rayoriginpoint
一旦光线点击中某个物体,就会更改其值

if (firstBody.categoryBitMask == rayCategory && secondBody.categoryBitMask==mirrorCategory )
{
    [self addChild:[self gravityline]];
    CGPoint p = contact.contactPoint;
    rayoriginpoint=p;

    NSLog(@"Contact have been made");
}
我想做的是非常基本的: 1-更改SKSpritenode经过的每个CG点的颜色 2-或者创建精灵节点,该节点在某个方向上向上缩放,直到碰到某个对象,然后改变方向

if (firstBody.categoryBitMask == rayCategory && secondBody.categoryBitMask==mirrorCategory )
{
    [self addChild:[self gravityline]];
    CGPoint p = contact.contactPoint;
    rayoriginpoint=p;

    NSLog(@"Contact have been made");
}