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

📄 plane.java

📁 J2ME 3D 第一人称射击迷宫类手机游戏源码。
💻 JAVA
字号:
package myGame.main;

import javax.microedition.m3g.*;

class Plane {
	// 定义顶点数组
	private final static short POINTS[] = new short[] { (short) 1, (short) 1,
			(short) 0, // 顶点0
			(short) 1, (short) -1, (short) 0, // 顶点1
			(short) -1, (short) 1, (short) 0, // 顶点2
			(short) -1, (short) -1, (short) 0, // 顶点3
	};

	// define the texture coordinates
	private final static short TEXTCOORDINATES[] = new short[] { (short) 1,
			(short) 1, (short) 0, (short) 1, (short) 1, (short) 0, (short) 0,
			(short) 0, };

	// triangle strip indices
	private final static int INDICES[] = { 2, 3, 0, // 第一个三角面的索引,由顶点2、3、0 构成
			1, 0, 3, // 第二个三角面的索引,由顶点1、0、3 构成
			0, 3, 2, // 第三个三角面的索引,由顶点0、3、2 构成
			3, 0, 1 // 第四个三角面的索引,由顶点3、0、1 构成
	};

	// strip lengths
	private final static int[] LENGTHS = new int[] { 3, 3, 3, 3 }; // 三角形长度,共有四个三角形

	// these arrays are the same for each plane
	private final static VertexArray POSITIONS_ARRAY, TEXTURE_ARRAY;// 声明位置数组和纹理坐标数组

	private final static IndexBuffer INDEX_BUFFER;// 声明索引缓冲

	private Transform wallTransform = new Transform();

	private float textureRepeat;

	static {
		// 初始化这些通用数组
		POSITIONS_ARRAY = new VertexArray(POINTS.length / 3, 3, 2);// 创建位置数组
		POSITIONS_ARRAY.set(0, POINTS.length / 3, POINTS); // 设置位置数组
		TEXTURE_ARRAY = new VertexArray(TEXTCOORDINATES.length / 2, 2, 2);// 创建纹理数组
		TEXTURE_ARRAY.set(0, TEXTCOORDINATES.length / 2, TEXTCOORDINATES);// 设置纹理数组
		INDEX_BUFFER = new TriangleStripArray(INDICES, LENGTHS);// 索引缓冲
	}

	/**
	 * Plane的构造函数,需要一个指定的transform对象,和纹理的重复次数
	 * 
	 * (它使用一个从外部传递进来的Transform对象来修正这些正方形的方位 以及需要的外部纹理的重复次数)
	 */
	Plane(Transform wallTransform, float textureRepeat) {
		this.wallTransform = wallTransform;
		this.textureRepeat = textureRepeat;
	}

	// 创建网格
	Mesh createMesh() {
		VertexBuffer vertexBuffer = new VertexBuffer();// 构建一个顶点缓冲对象
		vertexBuffer.setPositions(POSITIONS_ARRAY, 1.0f, null);// 设置位置,无缩放,无偏移
		// 设置纹理坐标和重复次数
		vertexBuffer
				.setTexCoords(0, TEXTURE_ARRAY, (float) textureRepeat, null);
		Mesh mesh = new Mesh(vertexBuffer, INDEX_BUFFER, null);// 根据顶点/索引缓冲构造Mesh对象
		mesh.setTransform(wallTransform);// 进行指定的翻转
		return mesh;// 返回这个正方形平面
	}

}

⌨️ 快捷键说明

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