public void Update() { // 未初始化则不创建(Engine要最先初始化) if (!Engine.Initialized || !ChunkManager.Initialized) { return; } //追踪player当前所处的chunk currentPos = Engine.PositionToChunkIndex(transform.position); if (currentPos.IsEqual(LastPos) == false) { ChunkManager.SpawnChunks(currentPos.x, currentPos.y, currentPos.z); } LastPos = currentPos; }
public void Update() { // 检测chunk存在 GameObject chunkObject = Engine.PositionToChunk(transform.position); if (chunkObject == null) { return; } // 获取体素信息 Chunk chunk = chunkObject.GetComponent <Chunk>(); Index voxelIndex = chunk.PositionToVoxelIndex(transform.position); VoxelInfo voxelInfo = new VoxelInfo(voxelIndex, chunk); // 获取拷贝 GameObject voxelObject = Instantiate(Engine.GetVoxelGameObject(voxelInfo.GetVoxel())) as GameObject; VoxelEvents events = voxelObject.GetComponent <VoxelEvents>(); if (events != null) { //进入某体素 if (chunk != LastChunk || voxelIndex.IsEqual(LastIndex) == false) { events.OnBlockEnter(this.gameObject, voxelInfo); } //停留 else { events.OnBlockStay(this.gameObject, voxelInfo); } } LastChunk = chunk; LastIndex = voxelIndex; Destroy(voxelObject); }