问题标签 [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 投票
4 回答
8469 浏览

objective-c - 如何围绕节点的 Y 轴旋转 SKSpriteNode?

我正在尝试围绕它的 Y 轴旋转一个 SKSpriteNode 节点。我知道有 zRotation 属性,它将顺时针或逆时针旋转节点;但是,我想围绕它自己的 Y 轴旋转节点(例如跳舞的芭蕾舞演员),我似乎找不到任何功能可以这样做。最好的推荐方法是什么?

0 投票
1 回答
581 浏览

objective-c - 向 SKScene 添加新的 SKSpriteNode 具有较大的间歇性滞后

我有一个标准的 UIViewController ( TestViewController ),在这个控制器的viewWillLayoutSubviews方法中,我实例化了一个新的 SKView 子类 ( TestView ),并将它作为子视图添加到控制器的视图中。此外,我添加了一些按钮,这些按钮旨在让用户控制 SKScene 子类 ( TestScene ) 中的操作。TestScene在TestView的init方法中实例化。在 TestView 作为子视图添加到 TestViewController 的视图之后立即调用[testView presentScene]这是TestView上的一个方法,它只是调用[自我presentScene:testScene]

按下TestViewController上提到的按钮意味着调用TestScene上的一个方法(通过TestView),该方法将实例化一个新的 SKSpriteNode 子类(TestSpriteNode)并将其作为子类添加到场景中。这确实有效,但我的问题是,对于第一个要添加的TestSpriteNode , TestScene呈现新的精灵会间歇性地长时间延迟。有时它可以完美运行,但大多数情况下它会卡住,多次触摸按钮后会同时出现多个精灵,之后一切正常。我应该提到这个问题发生在模拟器和我的设备上。

我尝试在TestScene 的- (void)didMoveToView:(SKView*)view中添加一个新的TestSpriteNode ,导致TestSpriteNode立即出现,然后在按下按钮添加新的TestSpriteNode时出现延迟。通过在TestScene上按下按钮调用的方法添加断点,我可以看到它被立即调用,但添加的TestSpriteNode不会立即呈现。

如果已经有一个解决动态添加的 SKSpriteNodes 渲染延迟的答案,我提前道歉,我无法找到它。关于将新的 SKSpriteNodes 添加到 SKScene,我有什么误解吗?

0 投票
6 回答
5411 浏览

sprite-kit - iOS SKSpriteNode - 离开屏幕

有什么方法可以从 Parent 中删除具有左侧区域边界的 SKSpriteNode?

例如:

只是指出我正确的方向。是通过检查其矩形来枚举更新方法,还是您可以应用它们的操作。我浏览了文档似乎找不到它,但我认为这将是一个简单的实现,因为它可以节省内存

0 投票
0 回答
1045 浏览

sprite-kit - enumerateChildNodesWithName 不起作用

嗨,任何人都可以帮助上面的代码,它没有通过我在屏幕上的 Sprites 枚举。checkCollision 肯定被称为:

我添加了 SKSpriteNode,它的创建方式如下:

0 投票
3 回答
4868 浏览

ios - Sprite Kit 中的碰撞检测

我在 Sprite Kit 中使用碰撞检测。它正在工作并防止我的精灵穿过路径。但是,我在 didBeginContact: 中没有收到通知,而且我似乎无法控制发生碰撞时物理引擎的响应方式。

我有各种汽车(SKSpriteNodes)使用 SKAction followPath:asOffset:orientToPath:duration 在以下路径中移动:

以前,如果两辆车相交,它们都会像往常一样继续行驶,其中一辆驶过另一辆。为了实现碰撞检测,我进行了以下更改...

将此添加到我的@interface:

将此添加到我的@implementation:

在我的 init 方法中添加了这个:

我创建了我的蓝色汽车:

我还创造了一辆红色汽车:

还有其他汽车,但我只是在使用这两个,直到我弄清楚问题所在。我想收到任何两辆车之间发生碰撞的通知。这就是为什么我只使用一个类别,carCategory。

第一个问题是我没有收到任何通知。我有这个,但它从不将任何内容记录到控制台:

第二个问题是,当两辆车相交时,它们会开始互相推开。这没关系,但我似乎无法管理如何处理碰撞的任何方面。奇怪的是,当我对我的两种汽车创建方法执行此操作时,没有任何变化:

碰撞检测仍然与为两辆车注释掉的那三行相同。这对我来说似乎不正确。只有当我也注释掉这一行时,碰撞检测才会停止:

所以我的主要问题是:为什么contactTest 没有报告任何内容?我的第二个问题是:当我没有为任何汽车分配 categoryBitMask、collisionBitMask 或 contactTestBitMask 时,为什么会发生碰撞检测?

0 投票
2 回答
5032 浏览

ios - iOS SpriteKit 如何使用应用程序包中的文件夹中的图像创建节点?

我正在尝试创建一个随机怪物的精灵,其中我的图像存储在主包中引用的文件夹中。

当我在上面运行我的代码时,我收到了这个错误

如果我从主包中引用图像,则该代码有效。如何使用应用程序包中文件夹中的随机图像并将其传递给 SKSpriteNode?

0 投票
1 回答
153 浏览

ios - SpriteKit,获取透明值的矩形

SKSpriteNode对我来说是新的。对于下面的图片,我想知道有哪些方法可以使用 sprite kit 获得非透明部分的矩形。

在此处输入图像描述

0 投票
1 回答
2119 浏览

ios - 有没有办法检测 2 个 SKSpriteNodes 之间的冲突但允许它们重叠

我认为没有办法做到这一点,但是有没有办法检测 2 个 SKSpriteNodes 何时相互交叉,但仍然允许它们重叠,所以它们实际上不会相互反弹?

我知道我可以只有 1 没有物理体,然后编写一些代码来检查它们的坐标,但我想也许我可能在 Sprite Kit 中遗漏了一些东西,我可以用 SK 方法检测到这一点。

0 投票
1 回答
863 浏览

ios - 子类化 SKSpriteNode 时物理体的问题?

我在继承 SKSpriteNode 时遇到问题。这是我对子类的实现:

然后我在我的主要游戏场景中创建了一只松鼠:

一切都创建得很好。然而,在游戏过程中,我尝试在触摸开始时“暂停”松鼠物理身体,然后在触摸结束时重新启用它(tempSquirrelBody 是场景的 SKPhysicsBody 实例变量)。基本上,我试图给出松鼠在用户触摸屏幕时向用户移动并越过其他对象的错觉。

不幸的是,这不起作用;当physicsbody应该设置为nil时,物理体没有被暂停,松鼠会与其他物体发生碰撞。当我将代码从我的 SSSquirrel 类移动到游戏场景时,它可以工作。我做错了什么?

谢谢!

0 投票
1 回答
5444 浏览

ios - 用它的孩子调整 SKSpriteNode 的大小

我正在尝试在具有一个孩子的 SKSpriteNode 上运行一系列 SKActions,所有操作都在 2 个形状上一起执行,除了:

这是我的代码:

}