gpt4 book ai didi

ios - 检测触摸节点任意一侧的节点

转载 作者:可可西里 更新时间:2023-11-01 01:09:03 26 4
gpt4 key购买 nike

我有一个使用 SceneKit 和 swift 构建的游戏。

have一直strugglingfigurehowsolve我的problem .

我正在尝试弄清楚如何检测在我的特定场景中接触的节点。下图展示了我面临的问题...如果用户触摸任何黄色立方体,它会突出显示整个黄色立方体链。底部的三个红色立方体和顶部的两个红色立方体也是如此。

游戏的运作方式是给用户一个立方体形状。形状可以通过用户以各种方式滑动来改变位置。立方体可能会出现或从场景中移除,因此立方体的位置很容易改变。最后,当用户滑动形状时,重力功能会将立方体拉到地面上,因此如果他们将下方的图像向右扭曲,那么它最终会成为一个全新的形状,其中大部分立方体都处于新位置。

这是我尝试过的:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: gameView)
let hitList = gameView.hitTest(location, options: nil)

if let hitObject = hitList.first {
let node = hitObject.node

//This is where I'm trying to detect the nodes and remove them
gameScene.rootNode.childNodes.filter({ $0.name == node.color }).forEach({ $0.removeFromParentNode() })
}
}

我的代码的问题在于它删除了所有 与命中立方体颜色相同的立方体。

enter image description here

最佳答案

我不会使用 SceneKit API 来解决这个问题。

您有一个游戏,其中包含可以根据特定限制进行排列的立方体。应用程序应该有每个立方体所在位置的模型(抽象表示),并且立方体的绘图只是该模型的 View 。涉及游戏玩法的一切,包括解决哪些立方体是相同颜色链的一部分,都应该在该抽象表示上完成,然后对立方体状态的任何更新都应该传播到 SceneKit 点头层次结构。

关于ios - 检测触摸节点任意一侧的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com