資源簡介
利用openGL與c++復(fù)刻我的世界游戲
具體情況請移步 https://blog.csdn.net/github_38838414/article/details/80010265
代碼片段和文件信息
#include?“Camera.h“
void?Camera::setting_view_person(Man?&?man)
{
if?(view_person?==?FIRST_PERSON)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
cameraAt.x?=?man.x?+?1.3?*?cos(man.vangle?/?180.0?*?PI);
cameraAt.y?=?man.y?+?man.head.y;
cameraAt.z?=?man.z?-?1.3?*?sin(man.vangle?/?180.0?*?PI);
lookAt.x?=?man.x?+?5?*?cos(man.vangle?/?180.0?*?PI);
lookAt.y?=?man.y?+?man.hair.y?-?look_dy;
lookAt.z?=?man.z?-?5?*?sin(man.vangle?/?180.0?*?PI);
gluLookAt(cameraAt.x?cameraAt.y?cameraAt.z
lookAt.x?lookAt.y?lookAt.z
0.0f?1.0f?0.0f);
}
else?if?(view_person?==?GOD)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
if?(!reset_god)
{
cameraAt?=?godAt;
lookAt.x?=?10;
lookAt.y?=?0;
lookAt.z?=?0;
reset_god?=?true;
}
gluLookAt(cameraAt.x?cameraAt.y?cameraAt.z
lookAt.x?lookAt.y?lookAt.z
0.0f?1.0f?0.0f);
}
else?if?(view_person?==?THIRD_PERSON)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
cameraAt.x?=?man.x?-?10?*?cos(man.vangle?/?180.0?*?PI);
cameraAt.y?=?man.head.y?+?10;
cameraAt.z?=?man.z?+?10?*?sin(man.vangle?/?180.0?*?PI);
lookAt.x?=?man.x;
lookAt.y?=?man.hair.y;
lookAt.z?=?man.z;
gluLookAt(cameraAt.x?cameraAt.y?cameraAt.z
lookAt.x?lookAt.y?lookAt.z
0.0f?1.0f?0.0f);
}
else?if?(view_person?==?BALL)
{
if?(trackballMove)
{
glRotatef(angle?axis[0]?axis[1]?axis[2]);
}
}
}
void?Camera::change_view()
{
reset_god?=?false;
if?(view_person?>=?3)
{
view_person?=?0;
}
else
{
view_person++;
}
}
void?Camera::unname(int?x?int?y?int?scr_wMan?&man)
{
float?r?=?0.06;
man.vangle?-=?0.1?*?(x?-?last_mm_x);
if?(x??x)
{
x?=?(1?-?r)?*?scr_w;
//????????SetCursorPos(x?y);
}
else?if?(x?>?(1?-?r)?*?scr_w?&&?last_mm_x? {
x?=?r?*?scr_w;
//????????SetCursorPos(x?y);
}
if?(view_person?==?FIRST_PERSON)
{
look_dy?+=?0.01?*?(y?-?last_mm_y);
}
last_mm_x?=?x;
last_mm_y?=?y;
}
void?Camera::mouse_Button(int?button?int?state?int?x?int?yint?scr_h)
{
this->scr_h?=?scr_h;
if?(button?==?GLUT_LEFT_BUTTON)
{
switch?(state)
{
case?GLUT_DOWN:
if?(view_person?==?FIRST_PERSON)
{
UnProject(x?y?GLUT_LEFT_BUTTON);
}
cameraAt.x?/=?VIEW_SCALE;
cameraAt.y?/=?VIEW_SCALE;
cameraAt.z?/=?VIEW_SCALE;
startMotion(x?y);
break;
case?GLUT_UP:
stopMotion(x?y);
break;
}
}
else?if?(button?==?GLUT_RIGHT_BUTTON)
{
//?視角收縮
if?(state?==?GLUT_DOWN)
{
if?(view_person?==?FIRST_PERSON)
{
UnProject(x?y?GLUT_RIGHT_BUTTON);
}
cameraAt.x?*=?VIEW_SCALE;
cameraAt.y?*=?VIEW_SCALE;
cameraAt.z?*=?VIEW_SCALE;
}
}
}
void?Camera::UnProject(float?mouse_x?float?mouse_y?int?c)
{
int?x?=?mouse_x;????????????????/*?屏幕坐標(biāo)?*/
int?y?=?mouse_y;
GLint?viewport[4];
GLdouble?mvmatrix[16]?projmatrix[16];
GLfloat?winx?wi
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????352??2017-11-27?21:36??minecraft_1\.git\config
?????文件?????????73??2017-11-27?21:36??minecraft_1\.git\desc
?????文件????????108??2017-12-01?14:49??minecraft_1\.git\FETCH_HEAD
?????文件?????????23??2017-11-27?21:36??minecraft_1\.git\HEAD
?????文件????????177??2017-11-27?21:36??minecraft_1\.git\hooks\README.sample
?????文件???????6128??2017-12-01?14:49??minecraft_1\.git\index
?????文件????????113??2017-11-27?21:36??minecraft_1\.git\info\exclude
?????文件???????1117??2017-12-01?14:49??minecraft_1\.git\logs\HEAD
?????文件???????1117??2017-12-01?14:49??minecraft_1\.git\logs\refs\heads\master
?????文件???????1052??2017-12-01?14:49??minecraft_1\.git\logs\refs\remotes\origin\master
?????文件????????150??2017-12-01?14:49??minecraft_1\.git\ms-persist.xm
?????文件????????238??2017-11-29?16:49??minecraft_1\.git\ob
?????文件???????1185??2017-11-29?16:49??minecraft_1\.git\ob
?????文件?????383015??2017-12-01?14:49??minecraft_1\.git\ob
?????文件???????7356??2017-11-29?20:10??minecraft_1\.git\ob
?????文件???????1284??2017-11-29?16:49??minecraft_1\.git\ob
?????文件????????216??2017-11-29?16:49??minecraft_1\.git\ob
?????文件????????198??2017-11-30?20:19??minecraft_1\.git\ob
?????文件???????1043??2017-11-29?20:10??minecraft_1\.git\ob
?????文件???????1453??2017-11-30?19:17??minecraft_1\.git\ob
?????文件?????????56??2017-11-29?20:10??minecraft_1\.git\ob
?????文件????????818??2017-11-28?17:37??minecraft_1\.git\ob
?????文件???????1483??2017-11-30?20:19??minecraft_1\.git\ob
?????文件????????384??2017-11-28?17:37??minecraft_1\.git\ob
?????文件????????122??2017-11-29?20:10??minecraft_1\.git\ob
?????文件????????707??2017-11-28?17:37??minecraft_1\.git\ob
?????文件???????1716??2017-11-30?20:19??minecraft_1\.git\ob
?????文件????????495??2017-11-29?16:49??minecraft_1\.git\ob
?????文件????????937??2017-11-28?17:37??minecraft_1\.git\ob
?????文件?????351892??2017-12-01?14:49??minecraft_1\.git\ob
............此處省略556個文件信息
評論
共有 條評論