问题标签 [skspritenode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
276 浏览

objective-c - 使用 SKSpriteNode 创建的按钮的右侧 1/3 未检测到触摸

在我的游戏中,我创建了许多按钮。我发现当用户在按钮右侧向下/向上触摸时,许多按钮都没有检测到。换句话说,当在按钮的左侧触摸按钮时,按钮会正确响应,而不是在右侧。简而言之,如果您将按钮分成三部分,则右侧 1/3 的按钮没有响应,而另外 2/3 的按钮可以正常工作。下面是我用来实现按钮的代码。谁能告诉我我可能做错了什么?当我第一次开始使用 Sprite Kit 时,我确实注意到,当 SKSpriteNode::zPosition 属性未设置为 1 或更大时,我的按钮根本不会响应……一旦我设置了这个属性,我的按钮就开始工作了。无论按钮精灵节点是否是场景中唯一的精灵节点,都会出现这个 zPosition 问题,这让我认为问题也不是重叠问题。有什么想法吗?

我已经扩展了 SKSpriteNode 类,增加了一个方法 GESpriteNode::setGestureHandler:withKey:,它具有以下签名:

并且,像这样实现(其中 _event 是 NSMutableDictionary):

它们的用法如下:

我的 GEGestureRecognizer.h 类定义如下:

并且,它的 GEGestureRecognizer.m 定义为:

0 投票
1 回答
115 浏览

game-engine - How to move sprites immediately inside the loop (FOR,WHILE ..)

I making a puzzle game and I get a problem when I try to move sprite to a new position by using SKAction moveTo.

Here is my case:

I have 4 sprites in list and I want to move them to new position by putting them in for loop and using moveTo action. But moveTo cannot move the sprite immediately, it need to wait until the loop finished to move the sprite. And the problem is I use the sprite positions as a condition to stop the loop. ( for example: if sprite position reach to limit constant it cannot be moved anymore and the loop will be break)

My question: Do we have any way to make the sprite move immediately inside loop ?? Or do you know any better way to solve my case?

Any help will be appreciated.

Thank you.

0 投票
1 回答
2453 浏览

ios - 创建自定义类型的 SKSpriteNode

我正在构建一个游戏,用户在开始时选择一种武器。我有一个 SKSword 类,但我希望能够设置它的类型。我想像下面这样实现它:

这样我就可以打电话了:

它将执行特定于指定剑的动作(例如HeavySword)

0 投票
2 回答
462 浏览

ios - 使用场景坐标的 SKSpriteNode zPosition 问题

精灵套件

我搜索了文档和 stackoverflow,但找不到有用的材料。

当用户在屏幕上拖动我的 SKpriteNodes 时,我正在更新精灵的 zPosition 以在必要时正确地在其他精灵前面显示精灵。我需要它如何工作取决于精灵的 yPosition。具有较高 yPosition 的精灵需要位于具有较低 yPosition 的精灵前面。所以我只是将 yPosition 设置为 zPosition,效果很好……几乎。

由于 SpriteKit 的坐标系,当精灵在屏幕的一半左右时,yPosition 达到零,然后变为负数 - 这对我的 zPosition 有向后的影响。我尝试使用 [self convertPointToView] 方法将点从场景坐标转换为视图坐标,但没有帮助。我想知道这是否与将锚点指向 CGPointZero 的父级(背景精灵节点)有关 - 这仍然让我有些困惑。

关于如何根据它的 yPosition 正确设置 zPosition 的任何建议——或者是否可以更改场景的坐标系。(看来{0,0}不是我背景节点的左下角,而是屏幕的中心)

0 投票
2 回答
1243 浏览

objective-c - 为什么我的精灵没有用图像初始化?

我正在玩 SpriteKit,对可能是一个非常愚蠢的错误感到目瞪口呆。我正在扩展一个 SKSpriteNode,Fish,声明如下:

我这样重写 spriteNodeWithImageNamed 类方法:

这是错误的,因为精灵没有被加载。另一方面,如果我只是在常规 SKSpriteNode 上调用 spriteNodeWithImageNamed 方法,它就可以正常工作:

我究竟做错了什么?

0 投票
2 回答
1576 浏览

objective-c - 如何检测精灵节点上特定位置的 SKSpriteNodes 之间的冲突?

我正在尝试实现检测两个精灵之间的碰撞的功能,但仅在这些精灵的特定位置。例如,如果我有一个钩子和一条鱼,而游戏的目的是用钩子钓到一条鱼,那么只有钩子的尖端与鱼钩的嘴或前部(比如 10%)之间的碰撞。鱼应该很重要,但不是任何其他碰撞。有没有一种简单的内置方法来测试这个?如果没有,关于如何做的任何指导?

我有以下标准代码获取框架上的碰撞点,我在其中添加 CGPoint p = contact.contactPoint;

我从那里去哪里?

0 投票
3 回答
4270 浏览

ios - 将文本字段添加到 SKScene

我正在使用 Sprite Kit 创建游戏,我想添加一个文本字段供玩家输入他们的名字。

如何使用 Sprite Kit 创建文本字段?我将创建一个播放器对象(我已经设置)并使用他们输入的名称和默认分数 0。混合 UITextfields 和 Sprite Kit 节点是不好的做法,甚至可能吗?

0 投票
1 回答
555 浏览

ios7 - 为什么我的 SKPhysicsJoints 不工作?

我有一个 SKSpriteNode 鱼和一个扩展的 SKSpriteNode 类钩子;当它们接触时,我试图将它们连接在一起,然后让它们一起移动。我正在使用这段代码:

我有这样设计的鱼:

和这样的钩子:

然而,当它们连在一起时,我移动鱼钩,鱼却不来。我犯了什么明显的错误吗?

非常感谢任何帮助。

0 投票
1 回答
315 浏览

ios7 - 加入后奇怪的 SKPhysicsWorld 行为

我正在使用 SKSpriteKit 制作钓鱼游戏。我有一个用于钩子和一些鱼的精灵节点(为此我扩展了 SKSpriteNode 类)。理想情况下,鱼被钩住时的行为是鱼的嘴会移动到鱼钩的尖端(使用动作来做到这一点):

然后鱼会向下旋转一点以模拟挂在钩子上(另一个动作:)

我认为这样运行这些:

这或多或少有效(根据鱼的方向解决扭结)

我后来想做的是在鱼和鱼钩之间创建一个关节,所以如果我移动鱼钩并且它已经钓到了一条鱼,鱼就会跟着一起走。

我这样做:

如果我在没有关节的情况下运行代码,鱼会留在钩子上并旋转。但是,一旦创建了关节并运行了动作,就不会调用来自上方的旋转动作(尽管会移动到钩子)。

我一点也不知道为什么会发生这种情况。有人有任何指示吗?

0 投票
1 回答
1445 浏览

rotation - 基于中心点旋转和缩放几个精灵的位置?

我正在寻找一些指导,因为我没有找到有关该主题的文档或线程。我的场景中有许多精灵节点,用户可以随意拖动它们。此外,我需要用户能够选择多个精灵和

  • 根据选择的精灵计算的中心点旋转选定精灵的位置(即,如果选择的精灵已经在圆形编队中,并且用户旋转编队,则每个精灵的位置都应旋转并保持圆圈。

  • 再次缩放选定精灵的位置,该中心点是根据选择的精灵计算的中心点(即,如果选定的精灵处于圆形阵型并且用户缩放阵型,则圆应该相应地变大或变小

我将需要处理其他事件,但这应该让我开始。我已经在维护选择了哪些精灵并改变了它们的位置(单个精灵和多个精灵)。我不知道如何旋转和缩放他们的位置。

有人可以指出我正确的方向吗?