问题标签 [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.
ios - Swift - 未调用 UICollisionBehavior 委托方法
我正在做一个简单的动画,它需要我处理一些与边界的碰撞。
我有一个类 viewcontroller,我将其扩展为 UICollisionBehaviorDelegate,这样我就可以识别和处理视图冲突。
出于某种原因,当发生碰撞时,我的委托方法永远不会触发。
ios - 未调用 UICollisionBehaviorDelegate 方法
我开发了一个应用程序并使用 UIKitDynamics 实现了碰撞检测。
碰撞检测正在工作。但不知何故,没有调用 UICollisionBehaviorDelegate 方法。不显示警告或错误。
我创建了一个示例项目来演示该问题:
基础 SDK:iOS 11.2,Xcode 版本 9.2 (9C40b)
谢谢您的帮助!
ios - UICollisionBehavior and UIGravityBehavior not working as expected with DispatchQueue
I'm currently designing a UI for a framework I've been given that plays connect 4. This framework is encapsulated in a class called GameSession. I will not describe the ins and outs of it's API and how it operates. I don't believe it's important.
I believe I may be misunderstanding dispatch queues and I am using them incorrectly. But, I have searched endlessly and have not found anything that hints to a solution to my problem.
Here is a a short explanation on what is happening. The method that controls the moves is playGame(botStarts: Bool, atColumn: Int). In this method, a collision boundary is added at the correct row and column using a method called addBoundary(atRow: Int, atColumn: Int). Then, a disc is created using a method called dropDisc(atColumn: Int, color: UIColor). This method creates a custom UIView, adds it to the view on screen and adds collision and gravity behaviours. It falls until it reaches the previously added boundary.
In playGame() I am dropping the discs onto the screen using DispatchMain.Queue.async{dropDisc()}. But, every time I call playGame() for the second time and beyond, the custom discs are drawn at the top of the screen but they fail to fall. On the first iteration, they are drawn and fall as expected.
Below are the functions that I've referenced above.
Here is a screenshot of my screen: https://imgur.com/7M3fklo.
On the bottom row you can see the users disc (yellow) and the bots disc (red). These were added on the first call to playGame(). But, on the top, you can see the two discs that were added on the second call to playGame(). These do not fall.
No matter what I've tried
Any feedback is much appreciated!
algorithm - 如何找到旋转矩形和旋转矩形与圆形之间的接触点?
目前我正在尝试创建一个仅处理矩形(可以旋转)和圆形的 2D 物理引擎。到目前为止,我已经能够实现适当的碰撞检测算法。现在我需要一个合适的碰撞解决算法,并且我拥有了我需要做的所有元素和步骤;我现在唯一缺少的是两个物体碰撞时的接触点,我不完全确定如何找到它。
这是我掌握的信息:
对于矩形:
(x, y) = 矩形的中心。
W = 宽度,h = 高度
θ = 顺时针旋转角度(以弧度为单位)
(Vx, Vy) = 矩形在 x 和 y 轴上的速度。
(我能够计算出 4 个顶点的坐标,所以如果找到接触点需要这个,就不需要解释了。)
对于圈子:
- (x, y) = 圆心。
- r = 半径
- (Vx, Vy) = 圆在 x 和 y 轴上的速度。
使用所有这些信息,我如何找到以下联系人:
- 旋转矩形与旋转矩形碰撞?
- 旋转矩形与圆形碰撞?
(我能够实现圆形与圆形碰撞解决方案)
ios - UICollisionBehavior 忽略屏幕边缘
我有几个 UIViews 在屏幕上不断移动。使用UICollisionBehavior
I 可以防止视图相互碰撞,但我需要它们穿过屏幕的边缘(顶部、左侧、右侧、底部)。在下面的这个例子中,一旦它们碰到屏幕的底部边缘,它们就会相互弹开,然后最终就坐在那里。我试图对 UIViews 进行子类化,并查看冲突是否仅适用于子类类型,但这不起作用。
如何防止 UIView 相互碰撞,但仍让它们穿过屏幕边缘?
子类:
代码:
ios - 方形父视图中圆形子视图之间的 UICollisionBehavior 检测
我有一个方形的 containerView,里面有一个 roundImageView。containerView 被添加到 UIDynamicAnimator。当 containerViews 的角相互碰撞时,我需要它们从 roundImageView 反弹,就像这个问题一样。在 customContainerView I 内部,override collisionBoundsType ... return .ellipse
但碰撞仍然是从正方形而不是圆形发生的,并且视图相互重叠。
自定义视图:
代码:
ios - 如何将 UICollisionBehavior 动画化为 iOS 上移动的 UIView 元素?
我正在做一个游戏,你必须用一个可轻弹的球击中一个目标。
- 目标( UIView ) 动画为 CABasicAnimation。
- 球( UIImageView) 被分配了一个动画器,它本身被分配了一个 UICollisionBehavior,包含目标和足球。
所以现在我用球击中了目标,但没有任何反应。但是,如果我击中目标的原点,则会发生碰撞:球从一个看不见的物体反弹回来,屏幕另一侧的目标移动,就像被球击中一样。
所以显然只有目标是动画的,而不是碰撞属性。我怎样才能解决这个问题?
UICollisionBehavior - 代码
CABasicAnimation - 代码