gpt4 book ai didi

objective-c - 指定没有动画变化的随机粒子起始颜色?

转载 作者:太空狗 更新时间:2023-10-30 03:42:15 33 4
gpt4 key购买 nike

有没有一种方法可以让粒子根据当前的“Color Ramp”以随机颜色生成?粒子在其生命周期内不会改变颜色,它们只是在出生时从“颜色斜坡”上的某处分配了一种颜色,并保持该颜色直到它们死亡。

这样做的结果是粒子在出生时就混合了从红色到蓝色的混合色。

Color Blend

在我的测试中,我似乎只能获得粒子生成为红色然后在接近屏幕底部时逐渐变为蓝色的行为。

enter image description here Falling Leaves

最佳答案

好吧,看起来你不能为 SKEmitterNode 使用预定义的 sks 文件......我能够通过以编程方式创建 SKEmitterNode。原因是因为当你用一个sks启动一个SKEmitterNode时,它看起来不像,它不响应setParticleColor:但是以编程方式启动一个。

今天,过去一小时,是我第一次弄乱 SKEmitterNode,所以你必须忍受我,因为我不知道如何使雪花效果完美,但我敢肯定您可以随便乱用 SKEmitterNode 允许您更改的值。

无论如何,我将假设 SKEmitterNode 出现在 SKScene 上(这是我知道如何获得所需效果的唯一方法)。

首先,您需要将您的 SKEmitterNode 设置为全局/属性/等,因为稍后您需要访问它。


MyScene.m 中:

@implementation MyScene {
SKEmitterNode* leafEmitter;
}

-(id)initWithSize:(CGSize)size {
leafEmitter = [[SKEmitterNode alloc] init];
[leafEmitter setParticleTexture:[SKTexture textureWithImageNamed:@"saFMB.png"]];
[leafEmitter setParticleBirthRate:10];
[leafEmitter setScale:0.5];
[leafEmitter setYAcceleration:-10.0];
[leafEmitter setParticleSpeedRange:100];
[leafEmitter setParticleLifetimeRange:100.0];
[leafEmitter setParticlePositionRange:CGVectorMake(self.size.width, self.size.height)];
[leafEmitter setPosition:CGPointMake(100, 400)];
[leafEmitter setParticleBlendMode:SKBlendModeAlpha];
[self addChild:leafEmitter];
}

所以我在这里所做的是以编程方式创建粒子效果,您可以在此处更改动画/速度/等变量以获得您正在寻找的最佳粒子效果。我会建议 reading this更多细节。


现在还记得我说过它需要在 SKScene 上呈现吗?那是因为我们将利用 update:(CFTimeInterval)currentTime 函数,该函数随 SKScene 一起提供。

update:(CFTimeInterval)currentTime 内部是我们将更改 SKEmitterNode 颜色的位置。由于此更新函数在每一帧都被调用,因此无需任何花哨的计时器等即可轻松更改颜色。不确定这是否是个好主意,但重要的是这个主意。

-(void)update:(CFTimeInterval)currentTime {
[leafEmitter setParticleColor:[UIColor colorWithHue:drand48() saturation:1.0 brightness:1.0 alpha:1.0]];
[leafEmitter setParticleColorBlendFactor:1.0];
/* Called before each frame is rendered */
}

在这种情况下,我们将颜色更改为随机 RGB 值,但我会让您自己选择颜色。


作为返回,这是我的代码产生的结果:

enter image description here


综上所述,不幸的是,您似乎无法仅使用粒子界面获得想要的效果。

关于objective-c - 指定没有动画变化的随机粒子起始颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19813252/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com