0

私は現在、Objective-C で SKEmitterNode を修正するための解決策を見つけることに行き詰まっていますが、以前は Xcode の古いバージョンではまったく問題がありませんでした。コードの前提は、以前は薄いブレード エフェクトを持っていたフルーツ ニンジャ ブレード エフェクトを実行し、現在は完全にパーティクル テクスチャを拡大し、泡のように見えます。

- (instancetype)initWithPosition:(CGPoint)position TargetNode:(SKNode    *)target  Color:(UIColor *)color
{
if (self = [super init])
{
    self.position = position;
    //Where the image node is and stacks on the blade effect
    self.tip = [SKSpriteNode spriteNodeWithImageNamed:@"Digsby.png"];


    self.tip.size = CGSizeMake(50, 50);

    self.tip.zRotation = 0.785398163;
    self.tip.zPosition = 10; //10
   self.tip.name = @"skblade";
    [self addChild:self.tip];

    SKEmitterNode *_emitter = [self EmitterNodeWithColor:color];
    _emitter.targetNode = target;
    _emitter.zPosition = 0;//0
    [self.tip addChild:_emitter];

    [self setScale:0.5]; //0.5
}

return self;
}



- (SKEmitterNode *)EmitterNodeWithColor:(UIColor *)color
{
SKEmitterNode *emitterNode = [SKEmitterNode new];
emitterNode.particleTexture = [SKTexture textureWithImage:[UIImage imageNamed:@"spark.png"]];
emitterNode.particleBirthRate = 2000; //3000


[emitterNode setScale:0.1];
emitterNode.particleLifetime = 0.2;
emitterNode.particleLifetimeRange = 0;

emitterNode.particlePositionRange = CGVectorMake(0.0, 0.0);

emitterNode.particleSpeed = 0.0;
emitterNode.particleSpeedRange = 0.0;

emitterNode.particleAlpha = 0.1;
emitterNode.particleAlphaRange = 0.2;
emitterNode.particleAlphaSpeed = -0.45;

emitterNode.particleScale = 0.5;
emitterNode.particleScaleRange = 0.001;
emitterNode.particleScaleSpeed = -1;

emitterNode.particleRotation = 0;
emitterNode.particleRotationRange = 0;
emitterNode.particleRotationSpeed = 0;

emitterNode.particleColorBlendFactor = 1;
emitterNode.particleColorBlendFactorRange = 0;
emitterNode.particleColorBlendFactorSpeed = 0;

emitterNode.particleColor = color;
emitterNode.particleBlendMode = SKBlendModeAdd;

return emitterNode;
}

サンプル コード リンク: http://avionicsdev.esy.es/article.php?id=8&page=1

4

0 に答える 0