だからこれは私がtouchesMoved機能と作品の全てに配置されているコードです。また、ここに掲載されていない他の機能のアニメーションやムーブメントを停止する方法もあります。一貫性とスムーズな運動により、ジョイスティック
私が午前、と私はそれをコーディング終了する前に、それは私にはかなり明白だった問題は、動きが吃音ます/ジッタ、それは私が探していた滑らかではないということです。また、スプライトの移動速度を制限する方法を尋ねたかったので、ジョイスティックからどれだけ遠くに移動したかに基づいて、変数「v」で移動することがわかります。
私のジョイスティックはあなたの最初のタッチが「ベース」とどこが新しい方向であまりにも移動しているように動作します。
TLDR:どのように私はスピードが現在の変数「V」に基づいて移動速度を制限し、動きがより滑らかに作るのですか?
for touch in touches {
let location = touch.location(in: self)
let v = CGVector(dx: location.x - joystickMove.x, dy: location.y - joystickMove.y)
let angle = atan2(v.dy, v.dx)
deg = angle * CGFloat(180/M_PI)
readyToMove = true
switch(deg){
case -44...45:
player.walkRight()
let action = SKAction.moveBy(x: v.dx, y: v.dy, duration: 0.5)
let repeatAction = SKAction.repeatForever(action)
player.run(repeatAction, withKey: "move")
break;
case 46...135:
player.walkUp()
let action = SKAction.moveBy(x: v.dx, y: v.dy, duration: 0.5)
let repeatAction = SKAction.repeatForever(action)
player.run(repeatAction, withKey: "move")
break;
case 136...180, (-180)...(-135):
player.walkLeft()
let action = SKAction.moveBy(x: v.dx, y: v.dy, duration: 0.5)
let repeatAction = SKAction.repeatForever(action)
player.run(repeatAction, withKey: "move")
break;
case (-134)...(-45):
player.walkDown()
let action = SKAction.moveBy(x: v.dx, y: v.dy, duration: 0.5)
let repeatAction = SKAction.repeatForever(action)
player.run(repeatAction, withKey: "move")
break;
default:
break;
}
}