如何检测iPhone屏幕右侧或左侧是否有水龙头?

时间:2015-07-07 21:24:51

标签: ios iphone swift

我是一个相当新的iOS世界初学者,如果我遗漏一些细节或者我不够清楚,请原谅我。我在底部的屏幕上放了一个球,如果用户点击iPhone的左半边,如果用户点击iPhone的右半边,我想知道如何让它向左移动。

我正在尝试制作的代码是:

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

    for touch: AnyObject in touches {
        let location = touch.locationOfTouch(<#touchIndex: Int#>, inView: <#UIView?#>)
    }


    ball!.physicsBody!.applyImpulse(CGVectorMake(25.0, 40.0))
}

我知道缺少代码,但我似乎无法理解如何处理它。我这样做了吗?我将非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

所以我确实找到了代码。这就是我所做的:

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

    var touch = touches.first as! UITouch
    var point = touch.locationInView(self.view)

    if point.x < size.width / 2 {

        ball!.physicsBody!.applyImpulse(CGVectorMake(-5.0, 10.0))

    }

    else {

        ball!.physicsBody!.applyImpulse(CGVectorMake(5.0, 10.0))

    }

}

现在,我遇到了另一个问题,这可能不像我想要解决它那么复杂。因此,最初在应用程序启动时球是静止的,如果向左轻击,它将进入(-5,10)方向,如果向右轻敲则进入(5,10)。问题是,当我点击右键时,当应用程序启动时,它会向(5,10)方向移动,但它不会向左移动到同一方向。如果我在应用程序启动时向右轻击并且球开始向(5,10)方向移动,我希望它在向前移动的同时向前移动,同时向前移动,几乎像锯齿形格式。像这样的格式/ V,如果你在纵向视图中看那个,除了线将是左右球。我希望这是有道理的:)

我会继续努力解决这个问题,并希望在您阅读时能够弄明白。

答案 1 :(得分:0)

我也很新,所以我不知道更先进的解决方案。

我要做的是在屏幕中央绘制/添加一条线。例如,我会使用SKSpriteNode并将其放在屏幕的中心。

 var middleLine = SKSpriteNode(imageNamed: "CenterLine")
 middleLine.alpha = 0 //you don't want the line to show
 middleLine.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))

这会将线条精灵放在屏幕的中心。然后,在touchesBegan中,我会做一个if语句,关于tap是否小于中心线的y坐标或更大。如果它更小,则点击将在左侧,如果它大于y坐标,则点击将在右侧。

您需要返回用户点按的触摸位置才能进行比较。

编辑:为了方便起见,您甚至不必添加精灵,只需将触摸x和y与CGRectGetMidX(self.frame)和CGRectGetMidY(self.frame)进行比较

在弄清楚物体是否离开屏幕时,我在游戏中使用了这个。我比较了它的x,y坐标,如果它大于框架内的坐标(或小于)。