私は非常に簡単な問題であると思われるものを理解しようとしている私の髪を裂いています。私はこの事の多くが接線的に話されていることを知っているので、これがうまく覆われた地面を歩いている場合は謝罪しますが、私の解決策に特有のものは見つけられません。iOS - カーブしたパスに沿ってオブジェクトをドラッグ
基本的には、オブジェクト/スプライトをあらかじめ定義されたカーブしたパス(ドラッグするだけでなく、ドラッグする)にドラッグします。 iPhoneの「Slide to unlock」のことを考えてください。スライダを左から右にドラッグするのではなく、パスを円弧または波線にします。
私の基本的な考え方は以下のとおりであった:
- 始点にオブジェクトを設定し、ベジエパスを定義します。
- オブジェクトに触れる場合は、touchesMoved(または同様の機能)のベジェパスでヒット検出をチェックします。接触がパス上に残っている場合は、パスが終了するまでパスに沿ってスプライトを前進させます(この場合、タスクが終了します)。またはユーザーの指がパスから外れます(この場合、オブジェクトは先頭に戻る必要があります)。
これは些細なことではありません(少なくとも、そう思われます)。たとえば、
- ベジェパスでのヒット検出は、実際には塗りつぶし部分ではなく、ストローク部分で行う必要があるため、王様の痛みです。そして、それでも、私はBezierの1ポイント幅のパス上でのみ、あらゆる幅のパスでそれを行う方法を見つけることができません。
- オブジェクトをパスに沿って部分的に移動することは、可能ではありません。すべてのアニメーションメソッドは、スプライトをENTIREパスに沿って移動します。また、これを実行するには、ユーザーのタッチに最も近いパス上の点を見つける必要があります。これを見たことがあれば、驚くほど複雑な数学が必要になります。
- 剛体を使ってすべてのスペースを占有すると考えましたが、オブジェクトはパス内を移動することしかできません。しかし、これには曲面剛体の定義が必要であり、その一部は凹形でなければならない。デッドエンド。
私はこれをあまりにも難しくしていますか?複雑ではないようです。私は全体的な解決策を必要としません。これについて考え、正しい方向にキックする新しい方法です。どんな助けでも本当に感謝しています。
これは長い時間前に尋ねられたものですが、私は非常に類似していると思います。私を正しい道に導く助けとなるかもしれません。 – gikygik