地图随主角移动

 虽然每个ccnode都有一个摄像机,但是一个场景应该就一个opengl摄像机 


CCCamera* camera = g_pScene->getCamera();  
float eyeZ = CCCamera::getZEye();  
camera->setEyeXYZ(mLastEyeX, 0, eyeZ);  
camera->setCenterXYZ(mLastEyeX, 0, 0);  


  1. void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);  

第一组eyex, eyey,eyez 相机在世界坐标的位置
第二组centerx,centery,centerz 目标参考物体在世界坐标的位置
第三组upx,upy,upz 相机竖直方向在世界坐标中的方向向量


你把相机想象成为你自己的脑袋:
第一组数据就是脑袋的位置
第二组数据就是眼睛看的物体的位置
第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)。

CCCamera的概念跟这个类似。

为什么调整eyez的值可以实现缩放。Z值就是摄像机离物体距离,拿眼睛看一个物体,离物体远,看起来物体小,离物体近,物体看起来大。

这里我们不调整eyez的值,因为不做缩放,用默认就好。

需要调整摄像机X坐标和参考目标的X坐标,让摄像机跟随人物移动:

  1. mLastEyeX = mRunner->getRunnerPX() - mRunner->getOffsetPx();  
  2. CCCamera* camera = this->getCamera();  
  3. float eyeZ = CCCamera::getZEye();  
  4. camera->setEyeXYZ(mLastEyeX, 0, eyeZ);  
  5. camera->setCenterXYZ(mLastEyeX, 0, 0);  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值