У меня есть круг под названием circle
и строка под названием ground
в представлении.Перемещение объекта в определенной области
Я могу перетащить & движения круга в целом зрения, но когда я пытаюсь ограничить его (в коде), чтобы двигаться только под областью земли - это работает (когда я пытаюсь перетащить его над землей), и круг перемещается только по моему перетаскиванию x, но когда я пытаюсь перетащить его обратно под землю - кружок перемещается только по перемещению местоположения x, а перемещение y-позиции не изменяется (y - это земля y).
Как я могу заставить его двигаться назад, свободным способом, под землей и не только положением перетаскивания x? Вот что я пытался до сих пор:
let ground = SKSpriteNode()
var circle = SKShapeNode(circleOfRadius: 40)
override func didMoveToView(view: SKView) {
/* Setup your scene here */
// ground.physicsBody?.dynamic = false
ground.color = SKColor.redColor()
ground.size = CGSizeMake(self.frame.size.width, 5)
ground.position = CGPoint(x: CGRectGetMidX(self.frame), y: self.frame.size.height/5)
self.addChild(ground)
circle.position = CGPointMake(CGRectGetMidX(self.frame) ,CGRectGetMinY(ground.frame) - (circle.frame.size.height/2))
circle.strokeColor = SKColor.blackColor()
circle.glowWidth = 1.0
circle.fillColor = SKColor.orangeColor()
self.addChild(circle)
}
var lastTouch: CGPoint? = nil
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */
let touch = touches.first
let touchLocation = touch!.locationInNode(self)
if circle.position.y < ground.position.y - (circle.frame.size.height/2){
circle.position = touchLocation
} else {
circle.position.x = CGFloat(touchLocation.x)
}
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first
let touchLocation = touch!.locationInNode(self)
if circle.position.y < ground.position.y - (circle.frame.size.height/2) {
circle.position = touchLocation
} else {
circle.position.x = CGFloat(touchLocation.x)
}
}