如何用雪碧工具包在水中产生二维波纹效应。
就像我有一个场景,其中包括2D ,当点击这个场景时,小圆圈就会出现缩放和消失,比如5-6圆圈平行缩放,给人一种涟漪的感觉--实际上不会做任何事情来浇水--只是在上面创建图像。
我在想什么是解决这个问题的最好办法。我怎样才能实现这样的目标。有什么想法吗?
发布于 2014-02-03 12:51:49
在希望创建波纹的节点中,只需执行以下操作
NSTimeInterval singleRippleDuration = 1.0f;
CGFloat ripleEndScale = 3.0f;
NSTimeInterval timeBetweenRipples = 0.3f;
NSUInteger numberOfRipples = 5;
SKAction* scaleUpAction = [SKAction scaleTo:ripleEndScale duration:singleRippleDuration];
SKAction* fadeOutAction = [SKAction fadeOutWithDuration:singleRippleDuration];
SKAction* rippleAction = [SKAction group:@[scaleUpAction,fadeOutAction]];
SKAction* createRipple = [SKAction runBlock:^{
//Create your ripple node somehow (SKShapeNode or SKSprite will do)
//set it to a desired position
[rippleNode setPosition:desiredPosition];
//Set scale to 0 so it scales from point
[rippleNode setScale:0.0f];
[rippleNode runAction:createRipple];
[self addChild:rippleNode];
}];
SKAction* wait = [SKAction waitForDuration:timeBetweenRipples];
[self runAction:[SKAction repeatAction:[SKAction sequence:@[createRipple,wait]] count:numberOfRipples]];
发布于 2015-04-20 20:01:26
在"CreateRipple“方法中有一个错误,它在代码块中运行,而不是像它应该的那样运行"rippleAction”,修正的方法是:
SKAction* createRipple = [SKAction runBlock:^{
//Create your ripple node somehow (SKShapeNode or SKSprite will do)
//set it to a desired position
[rippleNode setPosition:desiredPosition];
//Set scale to 0 so it scales from point
[rippleNode setScale:0.0f];
[rippleNode runAction:rippleAction];
[self addChild:rippleNode];
}];
希望这能帮上忙!
发布于 2016-05-25 11:25:24
下面是@Dobroćudni Tapir代码的一个完整的非常简单的示例。如果为iOS开发,您可以尝试使用touchesBegan而不是mouseDown。
import SpriteKit
class GameScene: SKScene {
override func mouseDown(theEvent: NSEvent) {
/* Called when a mouse click occurs */
let location = theEvent.locationInNode(self)
let singleRippleDuration = 1.0
let ripleEndScale = CGFloat(3.0)
let timeBetweenRipples = 0.3
let numberOfRipples = 3
let scaleUpAction = SKAction.scaleTo(ripleEndScale, duration: singleRippleDuration)
let fadeOutAction = SKAction.fadeOutWithDuration(singleRippleDuration)
let rippleAction = SKAction.group([scaleUpAction, fadeOutAction])
let createRipple = SKAction.runBlock({
let rippleNode = SKShapeNode(circleOfRadius: 200)
rippleNode.position = location
rippleNode.setScale(0)
rippleNode.runAction(rippleAction)
self.addChild(rippleNode)
})
let wait = SKAction.waitForDuration(timeBetweenRipples)
runAction(SKAction.repeatAction(SKAction.sequence([createRipple, wait]), count: numberOfRipples))
}
}
https://stackoverflow.com/questions/21524872
复制相似问题