問題タブ [uicollisionbehavior]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1415 参照

ios7 - UIDynamics とデバイスの回転

ビューに何らかの種類を追加するUIDynamicBehaviorと、デバイスが回転したときに完全に壊れます。これが縦向きのものです(正しく表示されています):

正しいレイアウト

そして、ここに横向きで、すべて壊れています:壊れたレイアウト

追加する呼び出しを削除するUIDynamicBehaviorと、自動レイアウトの問題がなく正常に動作するため、自動レイアウトの問題ではないと思います。自動レイアウト エラーもスローされません。コードは次のとおりです。

オーバーライドdidRotateFromInterfaceOrientationすると、の上部の境界が自動レイアウトのgreenView指示に従っていないことがわかります (setupCollisionsこれを修正するための呼び出しを削除します)。

自動レイアウトの境界は次のgreenViewとおりです。

0 投票する
1 に答える
413 参照

ios7 - UIDynamics - 衝突の問題

についてちょっと質問ですUIDynamics

iPhone の画面に水平方向に 8 つの正方形のブロックを配置しました。各正方形は40 x 40です。8個あるので、320画面の幅いっぱいになります。

画像は鮮明だと思います。ここで質問が来ます:

底に向かって垂直方向の重力を適用すると、ブロックは予想どおりに落下します。しかし、横方向の重力 (左または右) を適用すると、それぞれ約 1 ~ 2 ピクセルずつ移動します。したがって、最後は約 10 ピクセル程度シフトされます。何故ですか?

私が使う:

私のコードで。

横方向の重力を適用しても、ブロックはまったく動かないと思います。
可動パーツ間の衝突がどのように処理されるか、よくわかっていないと思います。

ヒントをお寄せいただきありがとうございます。

0 投票する
2 に答える
831 参照

ios - UICollisionBehavior: ローリング ボール?

物理アニメーションを行うために UIKit Dynamics を使用する iOS iPhone アプリで作業しようとしています。フープにボールを投げ入れるバスケットボールのゲームです。しかし、ボールを円形にする方法がわかりません ( と でこのように扱われUICollisionBehaviorますUIDynamicAnimator)。

私はもう試した:ball.layer.cornerRadius = ball.frame.size.width / 2.0;

しかし、これはボールを円形に描くだけです。実際にはこのように動作しません。また、次を使用して境界を描画できることも知っています。addBoundaryWithIdentifier:forPath:

しかし、単なる長方形ではないUIView(私の場合)の周りに境界を設定する方法がわかりませんか? UIImageViewSpriteKit を使用してこれを行うことができることはわかっていますが、UIKit ダイナミクスを使用してバスケットボール ゲームのコードを数時間書いているので、簡単な修正がある場合は切り替えたくありません。ありがとうございました!

0 投票する
4 に答える
2096 参照

ios - アイテム間で衝突が機能しない

アプリで UIDynamics を使用しています。私のアプリには2つの正方形があります。1 つは固定され、もう 1 つは (パン ジェスチャを適用して) 移動できます。それらを衝突させようとしても、衝突しません。デリゲート メソッドが呼び出されることはありません。これが私のコードです。誰かが問題を指摘してくれることを願っています。

0 投票する
1 に答える
1030 参照

ios - UICollisionBehavior の問題

UICollisionBehaviorいくつかのバグを見つけただけなのか、それとも正しく実装していないだけなのかはわかりません。

私は2つの主な問題を抱えています。

1) 定期的にUICollisionBehavior、プレーヤーと、画面の上から落ちるか下から押し上げられる新しいアイテムの 2 つのアイテムだけで s を作成します。

ただし、2 つのアイテム (プレイヤーではない) が衝突することがあります。しかし、アニメーターで衝突をログに記録すると、それらにはすべて、プレーヤーと落下/上昇アイテムの 2 つのアイテムしかありません。

クラスリファレンスによるとUICollisionBehavior、衝突:

動的アニメーターに複数の衝突動作を追加できます。動的アイテムは、同じアニメーターに属している場合、任意の数の衝突動作の一部にすることができます。たとえば、一連の青色のアイテムと別のピンク色のアイテムの衝突動作を指定できます。動的アニメーターに両方のビヘイビアーを追加すると、青色のアイテムが互いに衝突し、ピンクのアイテムが互いに衝突する可能性がありますが、青色のアイテムとピンクのアイテムは衝突せず、互いに無視されます。

上記の例を使用すると、ピンク色のアイテムと青色のアイテムが衝突しますが、それらの衝突動作は同じではありません。

2) 画面をタップするとプレイヤーが押されUIPushBehaviorますが、時々プレイヤーとアイテム (落下/上昇) の間の衝突が捕捉されません。

上記の問題が関連しているかどうかわからないので、今のところ同じ質問に入れました。

誰でもそれが何であるか考えていますか? 誰かがこれをバグとして見つけましたか?

いつもありがとうございます。

0 投票する
1 に答える
1163 参照

objective-c - UICollisionBehavior を使用して、ビューが画面上になくなったことを検出するにはどうすればよいですか?

UICollisionBehaviorUIKit Dynamics で使用して、画面外にスローしたビュー ( UIAttachmentBehaviorandを使用UIPushBehavior) が実際に完全に画面外になったときを把握しようとしています。

進行中に追跡できないため、複雑だと感じています。スローされたらUICollisionBehavior、最後のエッジがスーパービューと「衝突」したときを検出するために使用して把握しようとしています。これは、NSTimer ソリューションまたは同様のものと比較して、画面外にあるときを把握する最も簡単な方法のようです (ただし、より簡単な方法を思いつくことができれば、私はすべて耳にします!)。

このプロジェクト(具体的にはこちら)で見た解決策は次のとおりです。

これは、衝突の境界がどこにあるかを計算し (正直なところ、完全には理解していません)、衝突が検出されたときにデリゲートが呼び出されたときに を呼び出しますremoveFromSuperview

しかし、何らかの理由で、これは非常に不安定に機能します。時々私はそれを画面の外に投げ出し、実際には衝突が検出されたデリゲートを何らかの形で呼び出すことは決してありません。タイミングも少し遅くなることが多いです。

私のセットアップに関する限り、フレームがスーパービューの境界に設定された UIScrollView を画面外にスローするだけです(self.viewView Controller内)。

ビューを離れるときの衝突検出を設定するより良い方法はありますか?