2

メソッドを使用していくつかの CALayer を移動してい-mouseDraggedますが、それらが十分に近くにあるとき (またはそれらが少し重なっているとき) に「スナップ」したいと考えています。各レイヤーは「正方形」ではありません。さまざまなポリゴンを描いています。

これを行う方法は次のとおりだと思いました。

  1. 移動中のレイヤーの位置を取得します。
  2. 重なっているレイヤーまたは移動中のレイヤーの近くにあるレイヤーを取得します。
  3. (2)が真であるポリゴンの各辺で、移動レイヤーの辺と「近い」レイヤーの辺の間の最大距離(レイヤーの辺に直角)を確認する必要があります(レイヤーが重なっている場合、これは負の値です)。
  4. それに応じてレイヤーを移動します。

これが正しいアプローチかどうかはわかりません。私の頭に浮かぶ最初のことは次のとおりです。

  • 複数の面に「スナップ」できるとどうなりますか?

そして、このようにやっても(2)と(3)はどうすればいいのかわかりません。

それを行うより良い方法はありますか?

4

1 に答える 1

0

これは簡単ではありません。CALayersはベクターグラフィックではないため、考えられるあらゆる形状(たとえば、ドラゴンの画像)を処理する必要があります。

適切な衝突は困難です。代わりに、スナップしたい形状でマウス/タッチの位置をヒットテストしてみてください。

これを行うには、マウスの位置で可能なスナップレイヤーのそれぞれの透明度を確認します。これを行う方法については、この質問を参照してください。

より難しいがより良い結果:

ChipmunkやBox2Dなどの2D物理エンジンを使用して、衝突検出を行います。

于 2011-09-05T23:30:04.030 に答える