首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用雪碧试剂盒创建二维纹波效应

用雪碧试剂盒创建二维纹波效应
EN

Stack Overflow用户
提问于 2014-02-03 10:30:06
回答 3查看 2.4K关注 0票数 3

如何用雪碧工具包在水中产生二维波纹效应。

就像我有一个场景,其中包括2D ,当点击这个场景时,小圆圈就会出现缩放和消失,比如5-6圆圈平行缩放,给人一种涟漪的感觉--实际上不会做任何事情来浇水--只是在上面创建图像。

我在想什么是解决这个问题的最好办法。我怎样才能实现这样的目标。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-03 12:51:49

在希望创建波纹的节点中,只需执行以下操作

代码语言:javascript
运行
复制
    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]];
票数 3
EN

Stack Overflow用户

发布于 2015-04-20 20:01:26

在"CreateRipple“方法中有一个错误,它在代码块中运行,而不是像它应该的那样运行"rippleAction”,修正的方法是:

代码语言:javascript
运行
复制
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];
}];

希望这能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2016-05-25 11:25:24

下面是@Dobroćudni Tapir代码的一个完整的非常简单的示例。如果为iOS开发,您可以尝试使用touchesBegan而不是mouseDown。

代码语言:javascript
运行
复制
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))
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21524872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档