Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Objective c IOS 3d专家版_Objective C_Ios_Opengl Es_3d - Fatal编程技术网

Objective c IOS 3d专家版

Objective c IOS 3d专家版,objective-c,ios,opengl-es,3d,Objective C,Ios,Opengl Es,3d,我已经开发了一些简单的iOS应用程序,我希望开发一个简单的迷宫游戏。我想做的是最基本的,所以我想知道该怎么做 基本上我想做的就是:简单的逃离迷宫游戏,在这个游戏中,我在一个二维数组中阅读,这就构成了我的迷宫 我想把透视图放在每一个正方形的中间,当你轻击或按下一个按钮时,它会向前推进一个正方形,你可以向左或向右拐。我希望能够根据数组中的数字将纹理应用到方法中,我真的希望看到墙向我移动,然后停止 墙壁的高度总是一样的,迷宫将是简单的方形块,尽管我确实希望它能够处理超过2x2的房间,比如4x4,并且能

我已经开发了一些简单的iOS应用程序,我希望开发一个简单的迷宫游戏。我想做的是最基本的,所以我想知道该怎么做

基本上我想做的就是:简单的逃离迷宫游戏,在这个游戏中,我在一个二维数组中阅读,这就构成了我的迷宫

我想把透视图放在每一个正方形的中间,当你轻击或按下一个按钮时,它会向前推进一个正方形,你可以向左或向右拐。我希望能够根据数组中的数字将纹理应用到方法中,我真的希望看到墙向我移动,然后停止

墙壁的高度总是一样的,迷宫将是简单的方形块,尽管我确实希望它能够处理超过2x2的房间,比如4x4,并且能够处理渲染

我不确定尝试在OpenGL中做一些事情是否会过分,因为我的需求非常基本。就像我提到的,这不是一个自由的举动;每次你按下按钮并向左或向右转弯时,它将前进一平方米

我读过一些关于光线投射的东西,但不确定我如何在iOS中实现这一点。此外,我希望迷宫不会占据整个屏幕,可能是2/3,而其余的是标准的iOS控件,如按钮和标签,以及它背后的背景


我应该读什么书或文章来帮助我?我不喜欢使用第三方引擎,因为这看起来很基本。

您可以使用核心动画来实现这一点,这比OpenGL容易得多。如果将QuartzCore导入到项目中,则可以在三维中定位任何视图,如下所示:

//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;

因此,如果您将墙创建为UIImageView,您可以通过使用上述逻辑分别变换每个墙来将它们排列到房间中。

您可以使用核心动画来完成此操作,这比OpenGL容易得多。如果将QuartzCore导入到项目中,则可以在三维中定位任何视图,如下所示:

//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;

如果你将墙壁创建为UIVIEVIEWS,你可以通过使用上面的逻辑将它们单独转换成一个房间。

我尝试了你的上面的代码,在我的屏幕中间添加了一个426×426的图像,并改变了视图。在我的UIImage视图中,它所做的只是使图像比现在短而宽。我错过了什么吗?好吧,我的错误是我把我的iPad放在了风景中,而风景是在肖像中。因此,如果我的墙的总窗口是426,并且我希望它集中在屏幕上,我将如何应用透视图?另外,我希望它的中心有4面墙深,几乎是一个开放的正方形。为“整体窗口”创建一个视图,并将其放在屏幕的中间,然后将您的墙视图放在该视图的中心。只适用于墙壁,而不是窗口视图本身。基本上没有变换应用,所有的墙壁图像应该在屏幕中间的另一个顶部。好,我是字符串得到什么Your的说法。在下面,我的墙移动到远处,越远越小,我需要制作每种墙类型的小图像,或者我可以使用同一种墙并以某种方式缩放它。我开始在CATTransferM3DScale中查看图像,但我似乎没有正确缩放图像。我缩放x y只是为了说。75它没有像我想象的那样按比例缩小图像。我应该使用那个还是一个不同的缩放函数。我想尽量避免每一块墙砖做4套。哦,谢谢你的帮助,所以FARI尝试了你的上面的代码,在我的屏幕中间添加了一个426×426的图像,并改变了视图。在我的UIImage视图中,它所做的只是使图像比现在短而宽。我错过了什么吗?好吧,我的错误是我把我的iPad放在了风景中,而风景是在肖像中。因此,如果我的墙的总窗口是426,并且我希望它集中在屏幕上,我将如何应用透视图?另外,我希望它的中心有4面墙深,几乎是一个开放的正方形。为“整体窗口”创建一个视图,并将其放在屏幕的中间,然后将您的墙视图放在该视图的中心。只适用于墙壁,而不是窗口视图本身。基本上没有变换应用,所有的墙壁图像应该在屏幕中间的另一个顶部。好,我是字符串得到什么Your的说法。在下面,我的墙移动到远处,越远越小,我需要制作每种墙类型的小图像,或者我可以使用同一种墙并以某种方式缩放它。我开始在CATTransferM3DScale中查看图像,但我似乎没有正确缩放图像。我缩放x y只是为了说。75它没有像我想象的那样按比例缩小图像。我应该使用那个还是一个不同的缩放函数。我想尽量避免每一块墙砖做4套。哦,谢谢你迄今为止的帮助