Sprite kit 绘制一个移动节点的路径
我正在尝试使用新的SKSpritenode,我已经设法创建了一个Spritenode在屏幕上移动它,尽管我希望Spritenode在移动的地方留下一个痕迹(颜色) 创建Sprite节点的代码&my尝试创建一个shapenode作为spritenode的子节点(这不起作用)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
如果你有更好的解决方案,请让我知道 不要将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");
}