📄 carobject.h
字号:
//////////////////////////////////////////////////////////////////////////
// CCarObject类,车的基类,实现车子的一些基本操作。
//
// CarObject.h: CCarObject类的声明
//
// Copy Rights Wonderful 2006
//////////////////////////////////////////////////////////////////////////
#ifndef __CAROBJECT_H_INCLUDED__
#define __CAROBJECT_H_INCLUDED__
#include "SceneObject.h"
//-------------------------------------------------------------------------------
// 前向声明
//-------------------------------------------------------------------------------
class Model;
//-------------------------------------------------------------------------------
// 汽车的游戏状态
//-------------------------------------------------------------------------------
enum ECarGameState
{
ECarState_Begin, // 开始游戏
ECarState_Check, // 过了中途检查站
ECarState_Finish, // 过了终点检查站
};
//-------------------------------------------------------------------------------
// 车轮的索引
//-------------------------------------------------------------------------------
enum WheelIndex
{
FRONT_LEFT = 0,
FRONT_RIGHT = 1,
BACK_LEFT = 2,
BACK_RIGHT = 3,
WHEEL_COUNT = 4,
};
//-------------------------------------------------------------------------------
// 车子对象
//-------------------------------------------------------------------------------
class CCarObject : public CSceneObject
{
typedef CSceneObject Parent;
public:
// 构造析构函数
CCarObject();
virtual ~CCarObject();
// 载入模型
void LoadModels(const char *filename);
// 更新
virtual void Update();
// 动画
void Animate();
// 移动
void Move();
// 左转
void TurnLeft();
// 右转
void TurnRight();
// 渲染物体
virtual void RenderObject();
// 游戏状态
ECarGameState GetCarState() const { return m_eCurState; }
void SetCarState(ECarGameState state) { m_eCurState = state; }
// 速度相关
void SetMoveSpeed(float speed) { m_fMoveSpeed = speed; }
float GetMoveSpeed() const { return m_fMoveSpeed; }
void SetMaxMoveSpeed(float speed) { m_fMaxMoveSpeed = speed; }
void SetTurnSpeed(float speed) { m_fTurnSpeed = speed; }
void AddMoveSpeed(float speed) { m_fMoveSpeed += speed; if (m_fMoveSpeed > m_fMaxMoveSpeed) m_fMoveSpeed = m_fMaxMoveSpeed; }
void SubMoveSpeed(float speed) { m_fMoveSpeed -= speed; if (m_fMoveSpeed < 0.0f) m_fMoveSpeed = 0.0f; }
float GetWheelTurnRadian() const { return m_fWheelTurnRadian; }
protected:
void LoadWheelPosition(const char *filename);
void BuildObjectBox();
protected:
Model *m_pCarBodyModel; // 车身模型
Model *m_pWheelModel; // 轮子模型
float m_fMoveSpeed; // 当前移动速度
float m_fTurnSpeed; // 转弯速度
float m_fMaxMoveSpeed; // 最大移动速度
float m_fTurnRadian;
float m_fWheelRollRadian; // 轮子滚动的角度
float m_fWheelTurnRadian; // 轮子转弯的角度
Vector3 m_posWheel[WHEEL_COUNT];
ECarGameState m_eCurState; // 当前游戏状态
};
//-------------------------------------------------------------------------------
// 车子与车子的碰撞检测,true为发生碰撞,否则没有
//-------------------------------------------------------------------------------
bool CollisionCheck(const CCarObject &car1, const CCarObject &car2);
//-------------------------------------------------------------------------------
// 车子与车子的碰撞响应
//-------------------------------------------------------------------------------
bool OnCollision(CCarObject &car1, CCarObject &car2);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -