使用 Box2d 拖放 UIViews (iOS) [关闭]

2024-05-04

我最近发现了一个很好的教程,用于使用 iOS 版 Box2d 启用物理功能。

http://www.cocoanetics.com/2010/05/physicals-101-uikit-app-with-box2d-for-gravity/ http://www.cocoanetics.com/2010/05/physics-101-uikit-app-with-box2d-for-gravity/

我只是想知道如何实现 UIView 的拖放。任何人都可以提供任何方向吗?谢谢你的时间。


好吧,永远记住,Box2D 中的所有东西都必须通过强制移动(好吧,可以直接设置位置,但如果你想要平滑的物理运动,这不会成功)。

因此,如果您想将某个物体相应地移动到另一个物体(通过触摸移动物体),关节是实现此目的的最佳方法,猜猜看,有一种称为 MouseJoint 的关节类型,它非常适合这种情况(也可以由多点触摸)。

b2MouseJointDef def;
def.bodyA=/*background_body*/;
def.bodyB=/*body of dragged view*/;
def.frequencyHz=60.0f;
def.dampingRatio=0.0f;
def.maxForce=x * def.bodyB->GetMass(); //i use this for same applied force depending on mass
def.collideConnected=YES;
def.target.Set(loc.x/PTM_RATIO, (self.bounds.size.height - loc.y)/PTM_RATIO);
bwMouseJoint joint=b2World->CreateJoint(def);

然后设置鼠标关节的位置(目标)

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
     CGPoint loc=[[touches anyObject] locationInView:view];
     joint->SetTarget(b2Vec2(loc.x/PTM_RATIO,(view.bounds.size.height-loc.y)/PTM_RATIO));
}

...注意,这个片段包含未定义的“变量”,如 PTM_RATION (如果你不理解它们,请检查基本教程或文档)和视图(包含拖动视图的视图),所以将其视为一个想法,而不是复制并粘贴示例:)。

您创建一个关节(为多点触控应用程序中的每次触摸 - 但您需要跟踪哪个触摸代表该鼠标关节),并将关节的目标移动到其位置。因为它是关节,所以力会适当地施加到 bodyB 上(事实上,鼠标关节会施加很大的力,因此几乎就像即时拖动一样)。

有关关节的更多信息,请查看 f.e.本教程:Box2D 2.1a 教程 – 第 2 部分(关节) http://blog.allanbishop.com/box2d-2-1a-tutorial-part-2-joints/

我希望我的例子是可以理解的,如果有任何其他问题,请随时询问:)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Box2d 拖放 UIViews (iOS) [关闭] 的相关文章

随机推荐

  • 贾瓦尔 (JNI) 不可用

    Windows 7 64 位 Eclipse Indigo SlickSVN 1 6 17 均已安装 并带有在 Windows 中输入的库的路径 为什么我收到消息 JAVAHL JNI Not available 以及为什么 Eclipse
  • 仅使用 url 嵌入视频

    给定一个 youtube url 我如何使用 net c 将视频嵌入到页面中 只需添加如下一行 将 autoplay 设置为 0 或 1 取决于您是否希望人们真正留在您的页面上
  • 即使设置为 false,clipChildren 也不起作用?

    在我的应用程序中 我尝试使用动画移动图像 当我尝试制作动画时 即使我使用了图像 图像也会被剪切clipChildren每个 xml 块中均为 false
  • Mongo Facet 聚合与 Sum

    试图在这个聚合中找出一些简单的东西 元数据下的 totalArrests 字段返回 0 由于某种原因 无法对前一阶段的该字段求和 请指教 const agg await KID aggregate group id source group
  • 使用Ajax使用php将记录插入mysql数据库

    如何使用 Ajax 对此代码进行编码 请帮助 我是 Bignner 我已经编写了这段代码 它可以工作 但我想与 ajax 一起使用 因为不想重新加载页面 PHP文件 Code For Making Form And getting Data
  • 使用 boost 几何检查两条线是否有交点

    是否可以使用 boost geometry 检查两条线段 每条线段由二维中的两个点给出 是否彼此相交 如果可能的话 boost geometry 是否还允许检查特殊情况 例如另一条线上只有一个点 数字上 或者两条线相等 如果你具体谈论Boo
  • es6 import var 未在代码导入中定义

    出于某种原因 当我执行 var sphere new Core 时在游戏中 我看到核心未定义 即使我导入它 Game js import Core from gameUnits Core export class Game construc
  • 如何在闪亮的仪表板侧栏中手动展开子菜单

    我正在尝试手动展开闪亮仪表板侧边栏中的子菜单 这updateTabItems该功能仅适用于普通菜单 不适用于嵌套菜单 这是基本示例 修改自updateTabItems文档 来显示问题 如果我单击 切换选项卡 它会切换菜单 但不会展开具有子菜
  • GoogleTest:如何跳过测试?

    使用 Google Test 1 6 Windows 7 Visual Studio C 如何关闭给定的测试 又名如何阻止测试运行 除了注释掉整个测试之外 我还能做些什么吗 The docs https github com google
  • 计算 DIV 元素的最大/最小高度

    问题 给定一个具有固定高度的 DIV 元素 其中包含未知数量的子元素 这些子元素的大小相对于其高度 计算 DIV 可以调整大小的最大 最小高度 而不违反其子元素的任何最大 最小值元素 Example求 DIV A 的最大 最小高度 Answ
  • Java 中变量可能未初始化错误

    import java util Random public class dice private int times private int roll private int side Random roller new Random p
  • 使用 PyPy 运行 Python 程序?

    有人告诉我 你可以使用 PyPy 来运行 Python 程序 这要快得多 因为它是使用 JIT 编译器编译的 而不是解释的 以下程序查找数字 600851475143 的最大质因数 import numpy as np nr 6008514
  • jQuery:在 .innerHTML 或 .text 更改时制作动画

    我通过使用 jQuery 动态更改网站上的文本来翻译我的网站 如下所示 span Something in English span mySpan html Something else in Spanish 它效果很好 但是由于文本长度的
  • 当 SSL_get_fd 返回 -1 时,这意味着什么?

    我正在使用 frida 分析一个程序 该程序肯定通过 SSL 连接到某个服务器 当我打电话时SSL get fd 它返回 1 从文档中我看到这意味着ssl不包装套接字 BIO 已明确配置 因为我可以通过SSL get rbio openss
  • scala.collection.Seq 不适用于 Java

    Using 阿帕奇火花2 0 1 Java 7 在 Apache Spark Java API 文档中 DataSet 类出现了一个example http spark apache org docs latest api java org
  • Postgres如何从外部服务器传输所有枚举

    我有两个数据库 我希望能够在它们之间传输数据 因此我想将一个大型模式从一个数据库导入到另一个数据库 其中有枚举的分配 所以我遇到了这里描述的问题SQL 创建具有枚举列的外部表时出错 https stackoverflow com quest
  • 维基百科与 Python

    我有这个非常简单的 python 代码来读取 wikipedia api 的 xml import urllib from xml dom import minidom usock urllib urlopen http en wikipe
  • 将动态子项添加到我的 Firebase 参考网址

    我一直在尝试将子项动态添加到我的 firebase 数据引用 URL 但到目前为止还没有成功 假设我有以下数据结构 MyApp beta signups users fred 邮箱 电子邮件受保护 cdn cgi l email prote
  • Tomcat 连接池与准备好的语句缓存

    从 DBCP 连接池升级到 Tomcat 自己的实现 基于优秀的比较here http tomcat apache org tomcat 7 0 doc jdbc pool html Introduction 我有点困惑为什么他们放弃了这两
  • 使用 Box2d 拖放 UIViews (iOS) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我最近发现了一个很好的教程 用于使用