Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Box2d(iOS)拖放UI视图_Ios_Drag And Drop_Box2d Iphone - Fatal编程技术网

使用Box2d(iOS)拖放UI视图

使用Box2d(iOS)拖放UI视图,ios,drag-and-drop,box2d-iphone,Ios,Drag And Drop,Box2d Iphone,我最近发现了一个很好的教程,可以使用Box2d for iOS启用物理 我只是想知道如何为UIView实现拖放。有人能提供方向吗?感谢您的时间。好吧,请始终记住,Box2D中的所有东西都必须通过力移动(好吧,可以直接设置位置,但如果您想要平滑的物理移动,这不会起作用) 因此,如果您想将某个身体相应地移动到另一个身体(通过触摸移动身体),那么关节是实现这一点的最佳方式,猜猜看,有一种称为MouseJoint的关节类型,它非常适合这种情况(也可以由多点触摸使用) 然后设置鼠标关节的位置(目标) -

我最近发现了一个很好的教程,可以使用Box2d for iOS启用物理


我只是想知道如何为UIView实现拖放。有人能提供方向吗?感谢您的时间。

好吧,请始终记住,Box2D中的所有东西都必须通过力移动(好吧,可以直接设置位置,但如果您想要平滑的物理移动,这不会起作用)

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

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

-(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));
}
…请注意,此snipper包含未定义的“变量”,如PTM_RATION(如果您不理解它们,请查看基本教程或文档)和view(即包含拖动视图的视图),因此请将其作为一个想法,而不是复制和粘贴示例:)

您创建一个关节(在多点触摸应用程序中,每个触摸都要创建一个关节,但您需要跟踪哪个触摸代表thich mousejoint),并将关节的目标移动到它的位置。因为它是关节,所以力会适当地应用于身体B(事实上,鼠标关节会应用很大的力,所以几乎就像即时拖动)

有关关节的更多信息,请参阅本教程中的f.e.:


我希望我的例子是可以理解的,如果有任何其他问题,请毫不犹豫地问:)。

您能做到这一点吗?检查此问题:
-(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));
}