第一范文网 - 专业文章范例文档资料分享平台

OpenGL ES教程十二

说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

3D中的运动

现在你又把握处理gluLookAt(),让我们用它来模拟在地板上行走,我们只能移动(X,Z),也就是说,不要移动y,就是高度。

所以,思路会到gluLookAt(),想想,在3d世界中移动,你需要什么信息? 你需要:

你观察的位置或者说眼 你面向的位置或者说“中心”

一旦你知道了这两项,你就要准备好用户输入,以让用户控制移动。

设置以下变量来改变眼睛及中心

GLfloat eye[3];// Where we are viewing from GLfloat center[3];// Where we are looking towards

回到 initWithCoder: 在调用 gluLookAt()之前,初始化下:

eye[0] = 5.0; eye[1] = 1.5; eye[2] = 2.0;

center[0] = -5.0;

center[1] = 1.5; center[2] = -10.0;

到 drawView: 调用 gluLookAt():

gluLookAt(eye[0], eye[1], eye[2], center[0], center[1], center[2], 0.0, 1.0, 0.0);

为运动做的准备

在我们开始执行触摸事件并在世界中移动之前,我们需要在头文件中设置一些东西。来到头文件,我们需要创建一个新的枚举类型。

首先,设置我们的步行速度及转身速度:

#define WALK_SPEED 0.005 #define TURN_SPEED 0.01

下一步,我们创建一个枚举,来表示我们正在做什么,如下:

typedef enum __MOVMENT_TYPE { MTNone = 0, MTWalkForward, MTWAlkBackward,

MTTurnLeft, MTTurnRight } MovementType;

所以,在我们运行app的时候,我们可以一直是站着,或者前面,或者后退,或者转左,或者转右。

最后,我们定义个变量保存但前的运动状态:

MovementType currentMovement;

别忘了到 initWithCoder: 函数里面去设置 currentMovement 的默认值:

currentMovement = MTNone;

获得触摸

好的,我们已经进行了基本的介绍,让我们开始实际的处理工作。如果你还记得我之前的教程,你应该知道触摸状态四种,今天我们使用 touchesBegan 和 touchesEnded.

为了确定行动的种类,我们把屏幕分为四部分。

开始进行触摸的函数:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *t = [[touches allObjects] objectAtIndex:0];

搜索更多关于: OpenGL ES教程十二 的文档
OpenGL ES教程十二.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8atbl1vx4x03ypi6btga_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top