IOS 3d为专家

时间:2012-02-02 17:27:56

标签: objective-c ios opengl-es 3d

我开发了一些简单的iOS应用程序,我正在寻找开发一个简单的迷宫游戏。我正在寻找的是非常基本的,所以我正在寻找一些指导方针。

这基本上就是我要做的事情:简单的逃脱迷宫游戏,我在二维数组中阅读,这使我的迷宫。

我希望透视图站在每个方块的中间,当你轻弹或按下按钮时,它会前进一个方格,然后你可以向左或向右转。我希望能够根据数组中的数字将纹理应用到各种方式,我真的希望看到墙的移动朝我移动然后停止。

墙壁总是相同的高度,迷宫将是简单的方块,虽然我希望它能够处理可能超过2x2的房间,比如4x4,并且能够处理渲染

由于我的要求非常基本,我不确定尝试在OpenGL中做某事会有点矫枉过正。就像我提到的那样,它不会是一个自由行动;每按一次按钮向左或向右转,它将前进一个方格。

我已经阅读过有关射线投射的内容,但我不确定如何在iOS中完成此操作。此外,我想让迷宫不占用整个屏幕,可能是2/3,而其余的则是标准的iOS控件,如按钮和标签,以及背后的背景。

我应该阅读哪些书籍或文章来帮助我?我不想使用第三方引擎,因为这看起来非常基本。

1 个答案:

答案 0 :(得分:3)

您可以使用Core Animation执行此操作,这比OpenGL容易得多。如果将QuartzCore导入到项目中,则可以按如下方式将任何视图放置在3D中:

//set the view's 2D position so that the vanishing point is the middle
//of the screen - use the same centre for every view
view.center = CGPointMake(window.bounds.size.width / 2.0f, window.bounds.size.height / 2.0f);

//create a 3d transform
CATransform3D transform = CATransform3DIdentity;
transform.m34 = -1.0f/500.0f; // this sets the 3D perspective

//you can transform the view in 3D relative to the camera
//this rotates the view by 45 degrees about the Y axis
//but you can also scale, translate, etc using equivalent functions
transform = CATransform3DRotate(transform, M_PI_4, 0.0f, 1.0f, 0.0f)

//transform the view in 3D
view.layer.transform = transform;

因此,如果您将墙创建为UIImageViews,则可以使用上述逻辑单独转换每个墙,将它们排列到一个房间。