アニメーション中の当たり判定
プレイヤーが投げたい場所を長押ししてボールを投げ、敵プレイヤーに当てるプログラムを作成しています。
ボールが敵プレイヤーにめり込むと不自然なので、ボールが敵プレイヤーに触れた瞬間にアニメーションを削除して、自然な感じにしたいです。
発生している問題
敵に当たるところへボールを投げようとすると、アニメーションが最初から削除されてしまっているのか、長押ししたところにワープしてしまいます...
該当のソースコード
このプログラムを関数に入れて、0.01秒おきに実行させています。
Swift
1let CurrentPotition:CGPoint! 2 let redCurrentPotition:CGPoint! 3 let greenCurrentPotition:CGPoint! 4 let yellowCurrentPotition:CGPoint! 5 6 CurrentPotition = (Player.layer.presentation()?.position) 7 redCurrentPotition = (playerRed.layer.presentation()?.position) 8 greenCurrentPotition = (playerGreen.layer.presentation()?.position) 9 yellowCurrentPotition = (playerYellow.layer.presentation()?.position) 10 11 if Ball.frame.contains(CurrentPotition) { 12 Ball.layer.removeAllAnimations() 13 }else if Ball.frame.contains(redCurrentPotition) { 14 Ball.layer.removeAllAnimations() 15 }else if Ball.frame.contains(greenCurrentPotition) { 16 Ball.layer.removeAllAnimations() 17 }else if Ball.frame.contains(yellowCurrentPotition) { 18 print("ボールと黄色が触れた") 19 Ball.layer.removeAllAnimations() 20 }
黄色に投げるとボールと黄色が触れた
とPrintされます
試したこと
Swift
1 Ball.layer.removeAllAnimations() 2 if let position = self.Ball.layer.presentation()?.position { 3 print(position) 4 Ball.center = position 5 }
・アニメーションを切って、今の座標にボールを移動させてみた。
(後にBall.layer.removeAllAnimations()
を実行するプログラムも試してみました。)
補足情報
Xcode 11.2.1
シュミレーター iPhone8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。