Sprite kit 将节点钳制到屏幕边界
我在屏幕上有一个十字线,我可以用触摸移动它,如上图所示,但我的问题是我不知道如何防止它离开屏幕。有Sprite kit 将节点钳制到屏幕边界,sprite-kit,bounds,touchesmoved,Sprite Kit,Bounds,Touchesmoved,我在屏幕上有一个十字线,我可以用触摸移动它,如上图所示,但我的问题是我不知道如何防止它离开屏幕。有fmaxf和fminf但我不完全确定如何使用它们,如有任何帮助,将不胜感激 可以使用以下代码将节点限制在坐标内。以下代码仅检查精灵的位置是否在边界内。我假设这个位置在精灵的中心 override func touchesMoved(touches: NSSet, withEvent event: UIEvent) { for touch: AnyObject in touches
fmaxf
和fminf
但我不完全确定如何使用它们,如有任何帮助,将不胜感激 可以使用以下代码将节点
限制在坐标内。以下代码仅检查精灵的位置是否在边界内。我假设这个位置在精灵的中心
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let previousLocation = touch.previousLocationInNode(self)
var translation = CGPointMake(location.x - previousLocation.x, location.y - previousLocation.y)
crossHair.position = CGPointMake(crossHair.position.x + translation.x * 3, crossHair.position.y + translation.y * 3)
}
}
覆盖功能触摸移动(触摸:NSSet,withEvent事件:UIEvent){
用于触摸:触摸中的任何对象{
let location=touch.locationInNode(自)
让previousLocation=touch.previousLocationInNode(自身)
var translation=CGPointMake(location.x-previousLocation.x,location.y-previousLocation.y)
变量位置x:CGFloat=crossHair.position.x+translation.x*3
变量positionY:CGFloat=crossHair.position.y+translation.y*3
如果位置X<0{
位置X=0
}
否则,如果位置X>self.size.width
{
位置X=自身尺寸宽度
}
如果位置y<0{
位置y=0
}
否则,如果位置>自身尺寸高度
{
位置Y=自身尺寸高度
}
crossHair.position=CGPointMake(位置X、位置Y)
}
}
获取十字线位置后,检查十字线是否在屏幕外:
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let previousLocation = touch.previousLocationInNode(self)
var translation = CGPointMake(location.x - previousLocation.x, location.y - previousLocation.y)
var positionX : CGFloat = crossHair.position.x + translation.x * 3
var positionY : CGFloat = crossHair.position.y + translation.y * 3
if positionX < 0 {
positionX = 0
}
else if positionX > self.size.width
{
positionX = self.size.width
}
if positionY < 0 {
positionY = 0
}
else if positionY > self.size.height
{
positionY = self.size.height
}
crossHair.position = CGPointMake(positionX, positionY)
}
}
var x=crossHair.position.x;
var y=十字线.position.y;
if(crossHair.position.x>self.size.width){
x=自身尺寸、宽度;
}
if(十字线位置x<0){
x=0;
}
if(十字线.position.y>self.size.height){
y=自身尺寸、高度;
}
if(十字线位置y<0){
y=0;
}
crossHair.position=CGPointMake(x,y);
var x = crossHair.position.x;
var y = crossHair.position.y;
if(crossHair.position.x > self.size.width) {
x = self.size.width;
}
if(crossHair.position.x < 0) {
x = 0;
}
if(crossHair.position.y > self.size.height) {
y = self.size.height;
}
if(crossHair.position.y < 0) {
y = 0;
}
crossHair.position = CGPointMake(x,y);