我正在处理图像,以检测并适合包含分布式粒子的图像的任何自由区域中的最大圆圈:
(能够检测粒子的位置).
一个方向是定义一个圆圈触摸任何三点组合,检查圆圈是否为空,然后在所有空圆圈中找到最大的圆圈.然而,它导致大量组合,即C(n,3),n图像中的粒子总数在哪里.
如果有人能提供我可以探索的任何提示或替代方法,我将不胜感激.
我目前在碰撞语句中有这个代码,如果与对象发生碰撞,那么这个粒子会发生,但我该怎么做呢?因为它永远持续下去,而我只希望每次接触发生几次
SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"ff" ofType:@"sks"]];
emitter.zPosition = 0;
emitter.particlePositionRange = CGVectorMake(0, self.size.height);
emitter.position = CGPointMake(self.size.width, self.size.height/2);
[self addChild:emitter];
Run Code Online (Sandbox Code Playgroud) 在spritekit编辑器中创建后,是否可以更改粒子的颜色?我尝试了setParticleColor但它似乎没有做任何事情.基本上我想要一个粒子文件和一种以编程方式动态改变颜色的方法......
我尝试了一些解决方法,但仍然无法暂停现有的粒子iOS9.我正在使用以下技术来暂停场景:
self.paused = YES;globalPause = YES;变量来控制update:方法执行(因为update:在场景暂停时仍然运行).关键是我不会暂停视图,而是暂停视野.因为这个原因,我不会暂停视图.
以下是可以重现此问题的代码iOS9:
#import "GameScene.h"
@interface GameScene ()
@property (nonatomic, strong)SKEmitterNode *emitter;
@end
@implementation GameScene
-(void)didMoveToView:(SKView *)view {
[self addChild:[self getSpaceDustEmitter]];
}
//No need for this method though :)
-(SKEmitterNode*)getSpaceDustEmitter{
self.emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"spacedust" ofType:@"sks"]];
self.emitter .name = @"emitter_spacedust";
self.emitter .position = CGPointMake(CGRectGetMidX(self.frame),self.frame.size.height);
return self.emitter ;
}
@end
Run Code Online (Sandbox Code Playgroud)
因此,非常简单的例子可以工作,iOS8而不是按预期工作iOS9.会发生什么事情,即使一切看起来都是暂停的,也不是.如果场景未暂停,则取消暂停后的现有粒子移动到它们应该的位置.此外,看起来粒子也会继续产卵,如果暂停时间过长,这会导致明显滞后...
这是粒子编辑器的截图:
有人有一些合理的解释吗?到目前为止,我已经尝试明确暂停发射器:
emitterNode.paused = YES;
Run Code Online (Sandbox Code Playgroud)
它没有用,实际上这应该在场景暂停时自动完成(发射器被添加到场景中).这是尝试的另一件事是设置 …
谁能给我一个很好的例子,说明从哪里开始在libGDX中制作粒子系统?我查看了libGDX源代码中的测试示例,但我仍然无法理解它.也许只是对它的一个很好的解释将有所帮助.我想我想用大量的彩色颗粒进行某种爆炸.任何帮助是极大的赞赏!
我想在我的SpriteKit应用程序中添加一个粒子,但我找不到怎么做.我可以使用粒子编辑器创建,但如何将它们添加到我的视图中?
非常感谢提前!
我正在使用Swift,Sprite Kit和Xcode 6,
我想在SpriteKit中创建一个粒子效果,有点像iOS游戏中名为"Duet"的球的粒子效果,但我不知道如何继续,我设法创建一个粒子效果,但不是像这个游戏中的粒子跟随节点并绘制节点的路径......
这是我的代码:
let firstCircle = SKSpriteNode(imageNamed: "Circle")
let particle = SKEmitterNode(fileNamed: "FirstParticle.sks")
override func didMoveToView(view: SKView)
{
firstCircle.physicsBody = SKPhysicsBody(circleOfRadius: 7)
firstCircle.physicsBody?.affectedByGravity = false
particle.targetNode = firstCircle
addChild(firstCircle)
addChild(particle)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent)
{
for touch: AnyObject in touches
{
firstCircle.position = touch.locationInNode(self)
}
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent)
{
for touch: AnyObject in touches
{
firstCircle.position = touch.locationInNode(self)
}
}
Run Code Online (Sandbox Code Playgroud) 我试图使用这个例子作为背景,但我似乎无法让它工作.
http://vincentgarreau.com/particles.js/#nasa
为了解决这个问题,我不得不使用-1500px的上限,只是将我的文本放在它的顶部,这会导致响应性方面的重大问题.
有没有人知道如何严格地将它作为背景使用?
该插件的创建者已经在他的网站上完成了它.
您可以判断,因为当您检查它时,没有像在CodePen示例上那样悬停在顶部的"画布".
我正在设计我自己的粒子系统引擎,这是出于学习目的,我真的不想使用现有的引擎.
现在我生成了漂亮的粒子,但我想布置引擎以便更容易使用它们.
我一直在想一个类"粒子系统",
该类将包含以下引用:
particlesList:组成系统的粒子列表.
systemEmitter:粒子的系统发射器,Emitter类应该能够执行几种粒子发射技术,例如从线,点发射,从多边形中随机发射.此类也应该进行发射控制,例如向一个点发射,远离一个点,在一个方向和时间发射.
particleController:管理例如围绕点旋转,可变粒子大小,可变粒子颜色,粒子以不同方式反应的系统周围区域,碰撞检测(与其他对象或在粒子内是否必要).
粒子渲染器:负责绘制此系统,可变混合类型,粒子纹理,粒子类型,如三角形,圆形,自定义...
这四个项目将构成粒子系统类.一些FX可能需要多个粒子系统,例如Fire FX,可以使用一个系统用于火灾,一个系统用于烟雾,一个系统用于火花.
这就是我的想法,但我真的很想知道这种设计方法是否合适,或者你是否看到我缺少某些东西或者能够/应该做些不同的事情.我没有想过一些简单的方法来"保存"FX,例如什么是告诉我的引擎的最佳方式,"画火","画爆炸","画喷泉"等,也许存储外汇信息在xml文件中是个好主意等.
意见真的很受欢迎,正如我之前所说,我真的想建立这个,而不是使用其他引擎,出于学习的原因.
我一直想写它一段时间......作为大学的一个项目,我(和朋友一起)写了一个需要良好爆炸和粒子效果的游戏.我们遇到了一些问题,我们很优雅地解决了这个问题(我想),我想分享这些知识.
好的,所以我们找到了这个教程:制作一个粒子爆炸效果,这似乎很容易用Java和JOGL实现.在我回答我们究竟是如何实现本教程之前,我将解释如何完成渲染:
相机:只是一个标准正交基础,它基本上意味着它包含3个归一化的正交矢量,以及表示摄像机位置的第4个矢量.渲染完成使用gluLookAt:
glu.gluLookAt(cam.getPosition().getX(), cam.getPosition().getY(), cam.getPosition().getZ(),
cam.getZ_Vector().getX(), cam.getZ_Vector().getY(), cam.getZ_Vector().getZ(),
cam.getY_Vector().getX(), cam.getY_Vector().getY(), cam.getY_Vector().getZ());
Run Code Online (Sandbox Code Playgroud)
这样摄像机的z矢量实际上是目标,y矢量是"向上"矢量,而位置是......好位置.
所以(如果把它放在一个问题风格),如何实现良好的粒子效果?
PS:所有代码示例和游戏中的截图(包括答案和问题)均来自游戏,该游戏位于此处:Astroid Shooter