gpt4 book ai didi

ios - 如何使用 SkSpriteNode 控制 scenekit 角色移动

转载 作者:搜寻专家 更新时间:2023-11-01 07:17:42 27 4
gpt4 key购买 nike

我刚刚完成了我的 scenekit 游戏,其中我有一个移动的角色,它开始用单个磁带手势移动。我希望它在按下按钮时移动,所以我在 skscene 类中创建播放/暂停按钮。我如何制作我的只有当我按下播放按钮时角色才会移动?正如这张图片 enter image description here这是我的代码

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

for touch in touches {
let location = touch.location(in: self)
let _node:SKNode = self.atPoint(location)
if(_node.name == "Play Button"){
parentView?.startGame()

}
if self.pauseNode.contains(location) {
if !self.isPaused {
self.pauseNode.texture = SKTexture(imageNamed: "Pause Button")

}
else {
self.pauseNode.texture = SKTexture(imageNamed: "Play Button")

}

self.isPaused = !self.isPaused



}
}

LevelOneViewController viewDidLoad()中移动角色的函数

func move (){
Character.idle()
let startTap = UITapGestureRecognizer(target: self, action: #selector(LevelOneViewController.handleStartTap(_:)))
scnView.addGestureRecognizer(startTap)

let stopTap = UITapGestureRecognizer(target: self, action: #selector(LevelOneViewController.handleStopTap(_:)))
scnView.addGestureRecognizer(stopTap)
stopTap.numberOfTapsRequired = 2
}
move()
}

最佳答案

您需要使用代表您的播放按钮的 SKSpriteNode 创建一个叠加层 SKScene,并向您的节点添加一个手势识别器,然后更新您的角色。然后将此控件场景设置为 SCNView 的叠加层。

一些示例伪代码,您需要填写详细信息:

class GameControlsScene:SKScene {

var character:Character
var playButton:SKSpriteNode
var playButtonGestureRecognizer:UIGestureRecognizer

override init(character:Character) {
self.character = character
super.init()
}

func didMove(to:SKView) {
// add an SKSpriteNode for the play button
self.playButton = SKSpriteNode(imageNamed:"playButton")
self.playButton.position = CGPointMake(<<w>>, <<h>>)
self.playButtonGestureRecognizer = // add a UIGestureRecognizer with selector as handlePlayButtonTap
self.view.addGestureRecognizer(self.playButtonGestureRecognizer)
}

// gesture recognizer to handle play button tap
func handlePlayButtonTap() {
//in here move your character
}
}

现在,在您设置SCNView 的地方设置叠加层。

var controlScene:GameControlScene(<<character>>
scnView.overlaySKScene = controlScene

请注意,您还可以在 Xcode (.sks) 文件中创建一个 SKScene 并加载它,而不是以编程方式创建一个,但是添加一个手势识别器,将其连接到 3D 场景中的角色并将其设置为叠加是相同的。

使用 .sks 文件,this should help .

关于ios - 如何使用 SkSpriteNode 控制 scenekit 角色移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41108878/

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