📄 camera.cpp.svn-base
字号:
#include "camera.h"
#include "game_object.h"
#include "fsm.h"
#include "msgroute.h"
#include "msg.h"
#include "../gamedata/gamedata.h"
GameObject cameraGO;
float cameraMoveSpeed;
Vertex cameraDest;
float cRotX, cRotY; // camera相对于世界坐标系原点的偏转角
float mouseSpeed;
//初始化摄像机
void InitCamera()
{
GOInitialize(&cameraGO, UINT_MAX-1); //初始化GO
FSMInitialize(cameraGO.unique_id, FSM_Camera); //关联状态机
camera.radius = 50; //设置摄像机与player的距离
mouseSpeed = 0.001f; //灵敏度
cameraMoveSpeed = 30.0f; //移动速度
}
//每一帧的更新
void UpdateCamera()
{
GOUpdate(&cameraGO);
}
//使摄像机跟随player
void SetCameraWithPlayer()
{
SendMsg(MSG_CameraWithPlayer, cameraGO.unique_id, cameraGO.unique_id);
}
//设置
void SetCamera(Vertex position, Vertex lookat, Vertex up)
{
SetCameraPos(position);
SetCameraLookAt(lookat);
//SetCameraUp(up);
}
//设置位置
void SetCameraPos(Vertex pos)
{
extra_data ex;
ex.pos = pos;
SendMsg(MSG_CameraSetPosition, cameraGO.unique_id, cameraGO.unique_id, ex);
}
void SetCameraLookAt(Vertex lookat)
{
extra_data ex;
ex.pos = lookat;
SendMsg(MSG_CameraSetLookAt, cameraGO.unique_id, cameraGO.unique_id, ex);
}
void SetCameraUp(Vertex up)
{
extra_data ex;
ex.pos = up;
SendMsg(MSG_CameraSetUp, cameraGO.unique_id, cameraGO.unique_id, ex);
}
//在脚本动画里使摄像机从一个地方匀速移动到另一个地方
void MoveCameraFromTo(Vertex from, Vertex to)
{
SendMsg(MSG_CameraAuto, cameraGO.unique_id, cameraGO.unique_id);
extra_data ex;
ex.pos = from;
SendMsg(MSG_CameraSetPosition, cameraGO.unique_id, cameraGO.unique_id, ex);
ex.pos = to;
SendMsg(MSG_CameraSetDest, cameraGO.unique_id, cameraGO.unique_id, ex);
}
void SetCameraFree()
{
SendMsg(MSG_CameraFree, cameraGO.unique_id, cameraGO.unique_id);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -