我想要完成的是一个带有 3D 可旋转立方体的 iPad 应用程序,并且在立方体的每一侧我想定义多个区域,一旦单击这些区域就会进入另一个视图或显示一个弹出窗口。
这可以通过在 Xcode 中从头开始使用 OpenGL ES 来实现吗,或者我应该使用 3D 框架,如果可以的话,什么是最简单的框架?(我只听说过 Unity,而且很贵)
有没有人有一个很好的教程让我学习如何做到这一点?
我已经尝试过 3D CSS3 转换,但我想保留它作为最后的手段。
试试这个代码
CATransition *transition = [CATransition animation];
transition.delegate = self;
transition.duration = 0.8;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
NSString *types[4] = {@"cube", @"rippleEffect", @"cube", @"alignedCube"};
NSString *subtypes[4] = {kCATransitionFromTop, kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromBottom};
transition.type = types[0];
transition.subtype = subtypes[1];
[self.view.layer addAnimation:transition forKey:nil];
如果你想要的只是一个文字 3D 立方体,你可以使用 Core Animation。查看CATransformLayer。您可以使用CATransformLayer
. Joe Ricioppo 有一篇关于此的很酷的文章,以及一些示例代码和视频。它类似于 3D CSS3 变换,不同之处在于它更容易操作表示 3D 层次结构的单个层,而不是单独变换每个子层。最初只需旋转所有立方体面并定位它们,使它们形成一个立方体。然后你可以将变换应用到变换层本身,它会做所有花哨的数学来自动变换你的子层。
最大的问题是触摸处理将如何工作。您不能使用-hitTest:
on CATransformLayer
,因为它无法将 2D 触摸映射到它自己的 3D 层次结构。你也许可以通过自己的hitTest:
实现来解决这个问题,但这几乎感觉像是比它的价值更多的工作。我不知道 OpenGL 为 2D 到 3D 触摸转换提供了哪些条款,但这可能是您唯一的选择。
也许不完全是您正在寻找的,但我们已经生成了一些功能上可能对您有所帮助的代码:http: //www.chupamobile.com/products/details/2106/Cube+Selector/
它功能齐全,开箱即用