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

objective-c - 移动 SKNodes 和 SKSpriteNodes

我的游戏中有以下设置:

  • 一个名为 _backgroundLayer 的 SKNode
  • 我已经添加到 _backgroundLayer 9 次以制作更大背景的重复纹理
  • 一个名为 levelButton 的 SKSprite,它被添加到 _backgroundLayer ([_backgroundLayer addChild:levelButton];)。

我使用 levelButton.anchorPoint = CGPointMake(0.5, 0.5); 使 levelButton 在中间有一个锚点。现在,当我制作 levelButton.position = CGPointMake(0, 0); 和 _backgroundLayer.position = CGPointMake(0, 0); levelButton 的中间位置正确位于 (0, 0) 中,中间位于屏幕的左下角。所以没关系。但是,如果我将 levelButton 移动到 levelButton.position = CGPointMake(100, 0); 和 _backgroundLayer.position = CGPointMake(-100, 0);,如下所示,levelButton 仍应位于 (0,0) 的中间,即屏幕的左下角。然而,事实并非如此,levelButton 更靠右,它在右边大约 50 个像素。但不应该,因为我将 _backgroundLayer 100 向左 (-100) 和 _levelButton 100 向右 (100) 移动。它应该留在原地。

这些是基本的东西,我不明白为什么它们不能正常工作。我可能做错了什么,但即使我通读了 iOS Games by Tutorials 和一堆教程和技巧,我也找不到它。

请帮忙。

现在,我的代码如下:

0 投票
1 回答
512 浏览

objective-c - Sprite Kit 碰撞发生在精灵之外的几个点

我设置了一堆 SKSpriteNode。我的英雄节点不应该撞墙,如果撞墙,它会触发碰撞。这工作正常,但碰撞点并不完全在精灵的图像上。

这是英雄的代码:

这是墙壁:

无论碰撞是在顶部、左侧还是右侧,都会发生这种情况。我已经走了,并确保我的图像都尽可能地被废话。我不确定它还能是什么。看起来身体的碰撞箱比它应该的要大。

0 投票
3 回答
2972 浏览

ios - SKTexture get image name

Is there possible to get current image name from SKTexture from SKSpriteNode?

I am a new in SpriteKit and I'm writing a little game. I need to detect when ninja will hit enemy. Something like this

enter image description hereenter image description here

I am doing SKAction like

But hit is going only on images Ninja_hit_2.png or Ninja_hit_3.png.

So I need to detect current texture image name when i am doing intersectsNode ninja with enemy.

Now I am doing something like

where

I know that is not correct, but I can't find how to take current texture name or doing it correctly. Could you help me?

0 投票
1 回答
1419 浏览

ios - UIImage 中的 SKTexture 看起来不同

我正在玩 SpriteKit,我正在从 UIImage 创建一个 SKTexture,然后使用 SKSpriteNode 将孩子添加到我的 SKScene(作为背景),一切正常,除了 UIImage 看起来与原始图像非常不同,我尝试在 Photoshop 中重新创建图像,但问题仍然存在,在模拟器和真实设备上测试,不同的图像颜色,没有变化。

图片格式为PNG,我在Xcode 5中通过Images.xcassets添加

图像,结果:

在此处输入图像描述

不同的图像,结果:

在此处输入图像描述

我在我的 SKScene 子类中使用以下代码:

我做错了什么?

任何帮助,将不胜感激。:)

0 投票
2 回答
1006 浏览

ios - SKPhysicsBody 大小与 resizeToHeight

调整他的 skspritenode 的大小后,我对物理体的大小有疑问。

我的代码:

问题:

skspritenode 已调整大小,但他的物理体不跟随。你有想法吗?

0 投票
3 回答
4526 浏览

objective-c - SKAction如何结合withKey和completion

我对 iOS 和 Sprite Kit 编程很陌生,想知道如何结合:

一方面,我想阻止节点再次运行相同的动作(或动作序列),另一方面,我想对动作的终止做出反应,但是没有方法,据我所知, 没办法同时使用。

谢谢

0 投票
4 回答
7074 浏览

ios - 无法点击 SKSpriteNode - 未检测到触摸 ios

我对 iOS、Objective C 和使用 Xcode 还是很陌生。我只做了一个简单的新闻类应用程序,但现在我想创建一个我在另一个平台上发布的游戏。

基本上,我有一个对象会随机出现然后淡出,目的是点击对象使其消失。

但是,即使我设置了,我似乎也无法点击该对象 mySKSpriteNode.userInteractionEnabled = YES;

这是我的touchesBegan方法中的内容:

在我的日志中,当我点击屏幕(不是我有对象的地方)时,我得到了这个:

当我触摸 mySKSpriteNode 时,我在日志中什么也没有得到,甚至没有“某物被触摸”;

知道为什么会发生这种情况吗?

我发现的其他问题说答案是设置userInteractionEnabled = YES....也许代码中有一个特定的点我应该设置这个?..

感谢所有帮助!

0 投票
2 回答
515 浏览

ios - 如何用另一个替换 SpriteNode

我在做什么:

我每隔几秒就会通过一个重复的计时器设置炸弹,不断调用以下方法。

我想要的是:

在动画结束后,下一个精灵(爆炸精灵)出现在炸弹所在的位置。

问题:

我没有看到任何动作来替换精灵或帮助我正在尝试做的事情。SKAction 类参考 但我确实看到了这个任务 customActionWithDuration:actionBlock: 但不知道如何使用它,也无法通过搜索找到任何示例。

问题:

在 5 秒炸弹精灵动画结束后,有人可以告诉我如何使用创建此任务用爆炸精灵替换我的炸弹精灵吗?谢谢

0 投票
1 回答
534 浏览

memory-management - SpriteKit SKSpriteNodes 管理

我有一个游戏,我需要在屏幕上呈现具有从右到左飞行路径的敌人(SKSpriteNodes)。我目前把它做成苹果的冒险游戏,有两个数组:一个是活跃的敌人,一个是不活跃的;两者的容量都是 10。当游戏需要添加一个敌人(通过更新方法)时,它会从非活动数组中取出一个,将其作为子元素添加并放入活动数组中。当敌人完成它沿着屏幕的路径或当它被摧毁时,我将它从活动数组中取出,从它的父级中删除,并将它放在非活动数组的索引 0 处。

代码:

添加敌人:

移除敌人:

我担心的是:目前,10 个敌人对于当前设置来说已经足够了,但是如果我想将屏幕上添加的敌人相乘,10 个就不够了。

当我没有任何剩余时,我应该保持这种风格并尝试修改数组的大小吗?我应该采取另一种方法并停止使用数组并在需要时初始化敌人吗?

0 投票
1 回答
308 浏览

sprite-kit - 方法 TouchesBegan 中 SKSpritenode 的当前位置

这是我的第一个问题,我希望它不是太愚蠢,我已经搜索但找不到答案,希望你能帮助我!

我创建一个 SKSpriteNode 并将其添加到我的场景中,然后我希望能够在 TouchesBegan 方法中知道其当前位置,然后根据其当前位置使用条件。

}

这只是将它添加到我的场景的简单方法,然后我想知道 miChar.position.y 例如当 TouchesBegan

好吧,就是这样,可能很简单,或者只是不可能这样做.. 抱歉刚开始编码。谢谢你们的时间!