- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在使用 Swift 3 和 Spritekit 开发我的应用程序时遇到了一个问题。为了检测碰撞,我制作了四个独立的三角形组成一个正方形。当我将这些三角形作为一个单元旋转时,它们会重叠并且在旋转过程中不会保持正方形的形状(它们彼此重叠),但一旦旋转完成就会恢复正常。
这是我用于旋转的代码:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let location = touch.location(in: self)
if location.x < 0 {
blueTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
redTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
yellowTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
greenTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
} else if location.x > 0 {
blueTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
redTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
yellowTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
greenTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
}
}
}
下面是我的正方形的图片,由四个独立的三角形组成
请随时向我询问您需要查看的任何其他代码,任何输入都会有所帮助。另外,我无法解决重叠问题,所以提前抱歉,但我会尽力解决。
最佳答案
问题是你在旋转单个三角形,它们根据自己的坐标系旋转。想象一下,每个三角形都固定在中心并围绕它旋转。显然三角形会重叠。您应该围绕一个独特的点旋转它们。在您的情况下,最简单的方法是将它们添加到同一个父节点,然后旋转父节点:
// This is the configuration to do in sceneDidLoad
let node = SKNode()
node.addChild(blueTriLeft)
node.addChild(redTriLeft)
node.addChild(yellowTriLeft)
node.addChild(greenTriLeft)
scene.addChild(node)
// Inside touchesBegan(_:, with:)
node.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
关于ios - 作为一个单元旋转时重叠 SpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45122470/
我有一个(移动的) Sprite 节点。 我想检测此节点一定范围内的其他(移动) Sprite 节点。一旦检测到一个,它应该执行一个 Action 。 扮演 Action 部分对我来说没问题,但我似乎
我正在制作一款有云彩移动的游戏,我希望当角色降落在云彩上时云彩会消失。然而,当我输入代码时,如果角色绕过它并在仍在下落时撞到云的底部或侧面,它就会消失。这是我用于检测角色和云何时击中的代码。 是否有办
我想实现一个带有“彩色突出显示”的 Sprite 节点。 “突出显示可以有多种颜色。这是在沙盒应用程序中完成的,以进行尝试。 我考虑过使用SKTextures来表示节点的“高光”。然而,使用这种方法,
当将 spriteNode 缩放到较小尺寸(或较大尺寸)时,spriteNode 默认从中心缩放,这通常没问题。然而,我需要我的 Sprite 从它 body 的最左边开始缩放。有什么方法可以改变 s
我正在学习如何编码,作为第一个项目,我认为创建一个针对计算机的小石头剪刀布游戏是个好主意。问题是,显然计算机可能不会显示他的选择,所以我必须创建一个函数,使随机图片 x (我使用苹果的笑脸)出现在屏幕
我想在没有 uiscrollview 的情况下滚动 Sprite 套件中的节点 //触摸移动 let touch: UITouch = touches.first as! UITouch; let l
我正在尝试使用以下方法创建我的用户 SpriteNode。纹理是 Kladde,图像也不为空。 func spawnPlayer() { if didFirstTap == true && i
所以基本上我有 coin 对象,我想在屏幕上启动它。我有以下代码在滑动时运行一些计算,但不确定什么与我当前的情况相关: override func touchesBegan(touches: Set,
我正在制作一个游戏,在该游戏中,在某些时候会出现一个新按钮和一个标签。问题是在某些情况下它们都不会出现。 override func touchesBegan(touches: Set, withE
我有两个类别 enum ColliderType:UInt32 { case bulletCategory = 1 case bossCategory = 2 } 我让我的类(class)使用 SKP
我一直在尝试让 Sprite 具有不止一种纹理,这样它看起来就像在移动一样。我正在查看其他问题,但他们所做的一切都没有解决我的问题,这是我的代码: var textures = [SKText
如何通过触摸在固定点上旋转 SpriteKit 节点。所以当用户拖动他的手指时它会转动。我也希望能够获得 rpm。 (之前有人问过这个问题,但我想知道如何使用 SpriteKit 来做) swift
我有这段代码可以对子弹节点施加力并使其向敌人移动。在这种情况下,火箭始终朝上。我的问题是如何旋转这颗子弹以面向节点头部的方向。 let asd=SKSpriteNode(imageNamed: "
我有一个函数,可以创建 8 发来自玩家的子弹,呈圆形向外发射。我认为问题在于此处的这一行: let endPoint = CGPoint(x: distance * cos(angle), y: d
所以我正在使用带有图像的 spritenode 并且我没有设置它的位置。有趣的是,我在设置它的位置时遇到了问题,所以我没有,它默认设置为页面中心(出于明显的原因),这最终是完美的。所以现在在我的 to
我正在尝试创建一个小游戏,其中 SpriteNode(又名玩家)以恒定速度垂直向上移动。我想用它的角度向左或向右转向。但是,我无法使用其角度正确移动播放器。 感谢您的宝贵时间。 这是我写的部分代码:
所以我有 3 个不同的障碍物,它们随机产生并在 3 秒后被移除,但是如果例如 Obstacle1 已经产生并且随机数告诉程序产生另一个 Obstacle1,我得到一个错误 "Terminating a
我试图将 Sprite 的初始角度设置为 90 度。我不想调用 Action ,有没有办法像设置位置一样设置 Sprite 的角度参数? 最佳答案 z旋转 您可以使用接受辐射的 SKNode 的 zR
我在使用 Swift 3 和 Spritekit 开发我的应用程序时遇到了一个问题。为了检测碰撞,我制作了四个独立的三角形组成一个正方形。当我将这些三角形作为一个单元旋转时,它们会重叠并且在旋转过程中
我的新游戏 Sprite 有问题... 我的“汽车”在第一圈完美地沿着赛道行驶,但从那时起,它似乎在每圈结束时都会发生偏移。有人能告诉我我做错了什么吗? - (void)createSceneCont
我是一名优秀的程序员,十分优秀!