Camera.h
上传用户:cxh8989
上传日期:2021-01-22
资源大小:2544k
文件大小:2k
源码类别:

射击游戏

开发平台:

Visual C++

  1. //========================================================
  2. /**
  3. *  @file      Camera.h
  4. *
  5. *  项目描述: Quake室内场景实例
  6. *  文件描述:  摄像机类  
  7. *  适用平台: Windows98/2000/NT/XP
  8. *  
  9. *  作者:     WWBOSS
  10. *  电子邮件:  wwboss123@gmail.com
  11. *  创建日期: 2006-08-06
  12. *  修改日期: 2007-09-01
  13. *
  14. */     
  15. //========================================================
  16. #ifndef _CAMERA_H
  17. #define _CAMERA_H
  18. /** 摄像机类 */
  19. class CCamera {
  20. public:
  21. CCamera();
  22. ///获得摄像机属性的方法
  23. CVector3 Position() { return m_vPosition; }
  24. CVector3 View() { return m_vView; }
  25. CVector3 UpVector() { return m_vUpVector; }
  26. CVector3 Strafe() { return m_vStrafe; }
  27. /** 设置摄像机属性的方法 */
  28. void SetPosition(CVector3 vPosition) { m_vPosition = vPosition; }
  29. void SetView(CVector3 vView) { m_vView = vView; }
  30. void SetUpVector(CVector3 vUpVector) { m_vUpVector = vUpVector; }
  31. /** 放置摄像机 */
  32. void PositionCamera(float positionX, float positionY, float positionZ,
  33.       float viewX,     float viewY,     float viewZ,
  34. float upVectorX, float upVectorY, float upVectorZ);
  35. /** 旋转摄像机 */
  36. void RotateView(float angle, float X, float Y, float Z);
  37. /** 根据鼠标旋转摄像机 */
  38. void SetViewByMouse(); 
  39. void RotateAroundPoint(CVector3 vCenter, float X, float Y, float Z);
  40. /** 左右移动摄像机 */
  41. void StrafeCamera(float speed);
  42. /** 前后移动摄像机 */
  43. void MoveCamera(float speed);
  44. /** 检查键盘动作 */
  45. void CheckForMovement();
  46. /** 摄像机更新 */
  47. void Update();
  48. /** 设置视口 */
  49. void Look();
  50. private:
  51. /** 摄像机位置 */
  52. CVector3 m_vPosition;
  53. /** 摄像机视点 */
  54. CVector3 m_vView;
  55. /** 向上向量 */
  56. CVector3 m_vUpVector;
  57. /** 平移量 */
  58. CVector3 m_vStrafe;
  59. };
  60. #endif