⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cube.h

📁 小游戏 有碰撞检测和音乐 使用键盘openal
💻 H
字号:
#pragma once 
#include "sphere.h"

float frame_interval;
class CCube :public CObject
{
public:
	float hside;
	CSphere bsphere;
	float angle;
	float speed;
	bool showcube,showsphere;
	float r,g,b;

	CVector pos;
	CCube()
	{}
	CCube( float x, float y, float z, float _r, float _g, float _b , float _hside,
	bool wireFrame, float _speed ,bool _showcube, bool _showsphere )
	{
		pos.x = x; pos.y = y; pos.z = z;
		r = _r; g =_g; b = _b;
		hside = _hside;
		bsphere.wireFrame = wireFrame;
		speed = _speed;
		type = "cube";
		bsphere.r = 1.0; bsphere.g = 1.0; bsphere.b = 1.0;
		bsphere.radius = sqrt(2*hside*hside);
		bsphere.pos = pos;
		angle = 0.0;
		bsphere.angle = 0.0;
		showcube = _showcube;
		showsphere = _showsphere;
		bsphere.radius = sqrt(2*hside*hside)*1.25;
		
	}


	void Render()
	{
		glPushMatrix();
		glTranslatef(pos.x,pos.y,pos.z);
		glRotatef( angle*RAD_TO_DEG, 0.0, 1.0, 0.0 );
		if (showcube) 
		{
			// back
			CPlane p1( hside, -hside, -hside, -hside, -hside, -hside,
			-hside, hside, -hside, hside, hside, -hside,
			r, g, b, -1,1);
			// front
			CPlane p2(-hside, -hside, hside, hside, -hside, hside,
			hside, hside, hside, -hside, hside, hside,
			r, g-0.2, b,-1,1);
			// left
			CPlane p3( -hside, -hside, -hside, -hside, -hside, hside,
			-hside, hside, hside, -hside, hside, -hside,
			r, g-0.1, b, -1,1);
			// right
			CPlane p4( hside, -hside, hside, hside, -hside, -hside,
			hside, hside, -hside, hside, hside, hside,
			r, g-0.1, b, -1,1);
			// top
			CPlane p5( -hside, hside, hside,
			hside, hside, hside,
			hside, hside, -hside,
			-hside, hside, -hside,
			r, g, b, 2,1);
			p1.Render(); p2.Render(); p3.Render(); p4.Render(); p5.Render();
		}
		glPopMatrix();
		if (bsphere.wireFrame && showsphere) 
			bsphere.Render();
	}
	void MoveForward( CCamera *camera )
	{
		pos.x -= sin( angle ) * speed * 120.0 * frame_interval;
		pos.z -= cos( angle ) * speed * 120.0 * frame_interval;
		camera->view.x = pos.x;
		camera->view.z = pos.z;
		camera->pos.x -= sin( angle ) * speed * 120.0 * frame_interval;
		camera->pos.z -= cos( angle ) * speed * 120.0 * frame_interval;
		bsphere.pos = pos;		
	}
	void MoveBackward(CCamera *camera)
	{
		pos.x += sin( angle ) * speed * 120.0 * frame_interval;
		pos.z += cos( angle ) * speed * 120.0 * frame_interval;
		camera->view.x = pos.x;
		camera->view.z = pos.z;
		camera->pos.x += sin( angle ) * speed * 120.0 * frame_interval;
		camera->pos.z += cos( angle ) * speed * 120.0 * frame_interval;
		bsphere.pos = pos;
	}

	void TurnLeft(CCamera *camera)
	{
		angle += speed * 120.0 * frame_interval;
		camera->Rotate(speed* 120.0 * frame_interval,0,1,0);
		bsphere.angle += speed * 120.0 * frame_interval;
	}
	void TurnRight(CCamera *camera) 
	{
		angle -= speed * 120.0 * frame_interval;
		camera->Rotate(-speed * 120.0 * frame_interval,0,1,0);
		bsphere.angle -= speed * 120.0 * frame_interval;
	}


};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -