我的场景大于设备屏幕的大小,并且有一台摄像机跟随场景中的播放器。如果用户触摸屏幕右侧,我想将播放器向右移动;如果用户触摸左侧,我想将播放器向左移动。但是由于我的场景比我的手机屏幕大,因此在touchesBegan方法中,当用户到达场景的远端时会出现问题。如果播放器转到场景的左侧,即使用户触摸屏幕的右侧,它也仍然注册为“左侧触摸”,因为整个电话屏幕仅由场景的左侧填充。
这是我的touchBeBegan方法中的内容:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
isTouching = true
let touch = touches.first
if let location = touch?.location(in: self) {
print(location)
if location.x < 0 {
player.physicsBody?.applyImpulse(CGVector(dx: -8, dy: 0))
} else {
player.physicsBody?.applyImpulse(CGVector(dx: 8, dy: 0))
}
}
}
我尝试更改touch?.location(in:self)部分,但这似乎没有效果。有没有一种方法可以记录用户相对于屏幕边界而不是场景的触摸位置?
答案 0 :(得分:3)
您可以使用UIScreen.main.focusedView
代替self
。