gpt4 book ai didi

swift - Spritekit 中的 Pan Gesture Recognizer 移动对象

转载 作者:行者123 更新时间:2023-11-28 09:01:38 43 4
gpt4 key购买 nike

我正在尝试在 spritkit 中制作游戏,但无法弄清楚如何像平移手势识别器一样在屏幕上左右拖动球。

import UIKit
import SpriteKit

class GameScene: SKScene,SKPhysicsContactDelegate {

var ball = SKShapeNode()
let slidePlayer = UIPanGestureRecognizer()

override func didMoveToView(view: SKView) {
ball = SKShapeNode(circleOfRadius: 15)
ball.position = CGPointMake(self.frame.size.width/2, 500)
ball.fillColor = SKColor.purpleColor()
self.addChild(ball)

slidePlayer.addTarget(ball, action: "slide")
self.view?.addGestureRecognizer(slidePlayer)
}

func slide(){
print("slide")
}
}

最佳答案

这是我在屏幕上左右拖动的 playButton 的示例代码。

import SpriteKit

class GameScene: SKScene {

let playButton = SKSpriteNode(imageNamed: "play_unpresed")
var fingureIsOnNinja = false
let playCategoryName = "play"

override func didMoveToView(view: SKView) {

addPlayButton()
}

func addPlayButton(){

playButton.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
playButton.xScale = 0.2
playButton.yScale = 0.2
playButton.name = playCategoryName //give it a category name
self.addChild(playButton)
}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch in (touches as! Set<UITouch>){
let location = touch.locationInNode(self)

if self.nodeAtPoint(location) == self.playButton {

fingureIsOnNinja = true //make this true so it will only move when you touch it.

}
}
}

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {

if fingureIsOnNinja {

if let touch = touches.first as? UITouch {

let touchLoc = touch.locationInNode(self)
let prevTouchLoc = touch.previousLocationInNode(self)
let ninja = self.childNodeWithName(playCategoryName) as! SKSpriteNode
var newYPos = playButton.position.y + (touchLoc.y - prevTouchLoc.y)
var newXPos = playButton.position.x + (touchLoc.x - prevTouchLoc.x)

newYPos = max(newYPos, playButton.size.height / 2)
newYPos = min(newYPos, self.size.height - playButton.size.height / 2)

newXPos = max(newXPos, playButton.size.width / 2)
newXPos = min(newXPos, self.size.width - playButton.size.width / 2)

playButton.position = CGPointMake(newXPos, newYPos) //set new X and Y for your sprite.
}
}
}
}

希望对您有所帮助。

你可以关注THIS SpriteKit 中触摸的基本教程。

关于swift - Spritekit 中的 Pan Gesture Recognizer 移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31889842/

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