我正在研究一个简单的亚军游戏,我只有3个shapenode,一个玩家节点,它只是一个shapenode(redbox,30 x 30),带有左右两个按钮,基本上是两个shapenode。
我设法设置了标志并增加了玩家节点的位置X,并在 touchesBegan 方法中使用按钮向左和向右移动,并在 touchesEnded 方法中停止了移动,一切正常
问题是,如果我触摸让我们说出右键,则播放器将按预期向右移动。但是,如果我沿任意方向触摸并将手指移出按钮边界,只要我再次触摸该按钮,播放器就会一直持续移动,然后它停止。否则它会继续移动,而另一个按钮也不会停止它。
我使用 touchesMoved 方法在移动手指时停止播放器的移动,但这不能解决问题,因为 touchesMoved 方法以最小的移动触发即使我的手指稍微摇动也可以触摸。 我希望在手指移离按钮而不是移到按钮上时调用 touchesMoved 方法。
当我触摸精灵并将其移出节点(按钮)边界时,如何停止其移动?
答案 0 :(得分:0)
您有3个触摸事件:
您可以通过检查用户手指是否在按钮区域上方来解决问题。
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)
{
// nothing here
let touch = touches.first
let position_in_scene = touch!.location(in: self)
check_button(position: position_in_scene)
}
func check_button(position : CGPoint)
{
if right_button.contains(position)
{
// the tap was inside button boundaries
player.move_left()
}
else
{
// the tap was outside button boundaries
player.stop()
}
}
答案 1 :(得分:0)
我正在运行此代码:
GameScene类:SKScene {
(number - number1) / number
当我触摸向左或向右按钮时,播放器开始按预期移动,但问题出在播放器正在移动时,如果我触摸跳转按钮,请向右说,播放器在应移动和跳跃的位置暂停了移动 简单来说,我不能同时移动和跳跃