标签: skshapenode

如何在Sprite-kit中画一条线

如何在Sprite-kit中划一条线?例如,如果我想在cocos2d中绘制一条线,我可以轻松使用 ccDrawLine();

sprite-kit中有相同的东西吗?

ios ios7 sprite-kit skshapenode

37
推荐指数
7
解决办法
3万
查看次数

精灵套件 - SKShapeNode路径不绘制四线曲线

我一直在钻研Apple的新Sprite Kit,并且已经使用了一段时间了.然而,当我试图为一个弯曲的路径绘制时,我遇到了一个问题SKShapeNode.它似乎只是绘制一条直线.

这是我遇到的一个非常简单的例子 - 试图绘制CGPath一个SKShapeNode:

    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, 0, 0);
    CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);
    CGPathAddLineToPoint(path, NULL, 50, -100);
    CGPathCloseSubpath(path);

    SKShapeNode *shape = [[SKShapeNode alloc]init];
    shape.path = path;

    [self addChild:shape];

    CGPathRelease(path);
Run Code Online (Sandbox Code Playgroud)

这是我的ASCII艺术,它正在做什么(抱歉,我没有足够的声誉发布实际图像):

---------------------------------------------------------------------------------
|          EXPECTED RESULT              |            ACTUAL RESULT              |
---------------------------------------------------------------------------------
|                                       |                                       |
|             __----__                  |                                       |
|            /        \  <- Curve       |                ?                      |
|           /          \                |           ____________                |
|           \          /                |           \          /                |
| …
Run Code Online (Sandbox Code Playgroud)

cgpath ios sprite-kit skshapenode

31
推荐指数
1
解决办法
3688
查看次数

如何使用spriteKit在swift中绘制圆圈?

我刚开始使用swift进行ios开发,我无法弄清楚如何绘制圆圈.我只想绘制一个圆圈,将其设置为变量并显示在屏幕上,以便我以后可以将其用作主要播放器.谁能告诉我怎么做或者为我提供代码?

我在网上找到了这个代码:

var Circle = SKShapeNode(circleOfRadius: 40)
Circle.position = CGPointMake(500, 500)
Circle.name = "defaultCircle"
Circle.strokeColor = SKColor.blackColor()
Circle.glowWidth = 10.0
Circle.fillColor = SKColor.yellowColor()
Circle.physicsBody = SKPhysicsBody(circleOfRadius: 40)
Circle.physicsBody?.dynamic = true //.physicsBody?.dynamic = true
self.addChild(Circle)
Run Code Online (Sandbox Code Playgroud)

但当我把它放在xcode上运行应用程序时,游戏场景中没有任何内容.

cgpoint ios sprite-kit skshapenode swift

22
推荐指数
2
解决办法
2万
查看次数

没有指定的SKShapeNode初始化(circleOfRadius:radius)

我正在尝试在swift中创建一个SKShapeNode的子类作为SKShapeNode(circleOfRadius:radius),但是没有指定的init.

任何人有任何变通办法或有关原因的信息?我不确定这是一个bug还是故意的.我发现这个视频演示了SKSpriteNode的解决方法,但它不适用于我. https://skillsmatter.com/skillscasts/5695-how-to-subclass-a-skspritenode

总的来说,我正在尝试为SKShapeNode创建一个子类,然后我可以再次从子类中使用不同的版本来更轻松地管理我的代码.TIA

谢谢马丁我之前发现了这个例子.它可以工作,但我怎么会把它变成一个圆而不是一个矩形?

import Foundation
import SpriteKit


    class Player : SKShapeNode {

        override init() {
            super.init()
            self.name = "Player"
            self.fillColor = UIColor.blackColor()

        }

        init(rectOfSize: CGSize) {
            super.init()

            var rect = CGRect(origin: CGPointZero, size: rectOfSize)
            self.path = CGPathCreateWithRect(rect, nil)
        }

        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }
Run Code Online (Sandbox Code Playgroud)

在主要代码中

let playerOne = Player(rectOfSize: CGSize(width: 100, height: 100))
Run Code Online (Sandbox Code Playgroud)

subclass init sprite-kit skshapenode swift

15
推荐指数
1
解决办法
3924
查看次数

14
推荐指数
1
解决办法
5656
查看次数

如何在SKSpriteNodes中剪切随机孔

除了这里提出的问题:用SpriteKit在矩形中画一个洞?由于两者之间没有令人满意的答案,两者之间最显着的区别是这个问题需要缺少解决方法,特别是要求扭转SKCropNodes的功能.

由于孔的随机性,孔的数量以及孔要应用的物体的变化,上述问题可以解决的hacky方式的类型无法解决这个问题中的主要问题.

因此瑞士奶酪的例子如下:

想象一堆随机大小的矩形SKSpriteNodes,充满各种色调的奶酪色.

如何通过从每片奶酪中切出随机圆圈来制作瑞士奶酪?

如果SKCropNodes是圈子,他们只留下圆形的奶酪片而不是从奶酪块中切出孔.有没有办法反转SKCropNodes的行为,所以他们切换孔?

image-masking sprite-kit skspritenode skcropnode skshapenode

14
推荐指数
1
解决办法
605
查看次数

如何为SKShapeNode设置小于1的lineWidth?

我正在尝试制作一个具有非常思考笔画的SKShapeNode(如0.25像素).似乎lineWidth为1是我可以去的最小值,至少在屏幕上看起来是这样的,无论是什么值设置为小于1.

SKShapeNode *buttonOutline;
buttonOutline = [[SKShapeNode alloc] init];

CGMutablePathRef myPath = CGPathCreateMutable();
CGPathAddRoundedRect(myPath, NULL, CGRectMake(0, 0, 100, 30), 10, 10);    
buttonOutline.path = myPath;
buttonOutline.strokeColor=[SKColor grayColor];

buttonOutline.lineWidth= 0.25;

buttonOutline.name = [NSString stringWithFormat:@"%@-buttonOutline", thisButtonName];
buttonOutline.position =  CGPointMake(thisXPos,thisYPod);
buttonOutline.alpha = 1;
Run Code Online (Sandbox Code Playgroud)

objective-c ios sprite-kit skshapenode

11
推荐指数
1
解决办法
2961
查看次数

使用Sprite Kit中的SKShapeNode表现不佳

我正在使用Sprite Kit 制作一个" Achtung die kurve ".对于不断移动的线/玩家,我正在使用A CGMutablePathRef和SKShapeNode.在更新方法中,我正在这样做

// _lineNode is an instance of SKShapeNode and path is CGMutablePathRef
CGPathAddLineToPoint(path, NULL, _xPos, _yPos);
_lineNode.path = path;
Run Code Online (Sandbox Code Playgroud)

添加到该行.更新方法还在不断更新_xPos和_yPos以使其增长.

我想我真正要问的是有另一种更有效的绘制线条的方法,因为我现在这样做的方式现在会在一段时间后(大约15-20秒)将帧速率降低太多.此时FPS不断下降,直到游戏无法播放.时间分析器告诉我这一行:_lineNode.path = path是FPS丢弃的原因.

谢谢你的帮助!非常感谢.

PS.我试图不使用SKShapeNode,因为他们似乎无法画得太好(曲线中的小孔/文物等)

截图: 线被不断绘制

frame-rate sprite-kit skshapenode

11
推荐指数
1
解决办法
4736
查看次数

如何在没有SKShapeNode的情况下实现循环加载器

我想创建一个简单的圆形装载机动画圆圈和它周围的边框正在消失

我找到了很棒的框架,但他们使用SKShapeNode和SKShapeNode性能对于实际部署的应用程序来说非常糟糕

ProgressNode:非常酷的框架

sprite-kit skshapenode swift

9
推荐指数
1
解决办法
275
查看次数

如何设置SKShapeNode的不透明度动画?

我正在我的游戏的说明屏幕上工作,并希望向用户显示他们应该点击屏幕的某个区域.

所以我想在哪里展示动画

1)手指伸缩进出屏幕,然后 - 工作正常 -

2)改变不透明度的矩形(显示在那里点击)然后 - 需要帮助 -

3)文字闪烁,说"点击这里" - 需要帮助 -

对于1),我有这个(工作正常):

    finger = SKSpriteNode(texture: fingerTxt)
    finger.position = CGPoint(x: 330, y: 450)
    finger.zPosition = 10
    InstHolderNode.addChild(finger)

    let fingerTapScaleDown = SKAction.scale(by: 0.6, duration: 0.7)
    let fingerTapScaleUp = SKAction.scale(by: 1.6, duration: 0.7)
    let fingerScalingSequence = SKAction.sequence([fingerTapScaleDown,fingerTapScaleUp])

    let fingerTapScaleForever = SKAction.repeatForever(fingerScalingSequence)
    finger.run(fingerTapScaleForever)
Run Code Online (Sandbox Code Playgroud)

对于2),我有:

    var rect = SKShapeNode(rectOf: CGSize(width: 150.0, height: frame.height * 2))
    rect.position = CGPoint(x: 300, y: 100)
    rect.fillColor = SKColor.brown
    rect.alpha …
Run Code Online (Sandbox Code Playgroud)

sprite-kit skshapenode swift

9
推荐指数
1
解决办法
840
查看次数