Ver Fonte

3dModeling pulic.js 韩正义 commit at 2020-11-24

韩正义 há 4 anos atrás
pai
commit
bd7fd86f22
1 ficheiros alterados com 74 adições e 0 exclusões
  1. 74 0
      3dModeling/grds/pulic.js

+ 74 - 0
3dModeling/grds/pulic.js

@@ -44,3 +44,77 @@ function createBox() {
  */
 function enterFps(pos) {
     if (fpsCtrl == null) {
+        app.pauseEvent(THING.EventType.Pick, '*', THING.EventTag.LevelPickOperation);
+        app.pauseEvent(THING.EventType.KeyUp, null, '空格键切换视角');
+        app.camera.position = pos;  // 起始位置为鼠标点击时的位置
+        // 添加第一人称行走控件
+        fpsCtrl = app.addControl(
+            new THING.WalkControl({  // 参数可以动态修改
+                walkSpeed: 0.02,  // 行走速度
+                turnSpeed: 0.25,  // 右键旋转速度
+                gravity: 26,  // 物体重量
+                eyeHeight: 1.6,  // 人高度
+                jumpSpeed: 10,  // 按空格键 跳跃的速度
+                enableKeyRotate: false,  // 默认不开启键盘控制旋转
+                useCollision: true,  // 默认不开启碰撞检测
+                useGravity: true,  // 默认开启重力
+                groundObjects: [app.scene],  // 把整个场景都添加,可把楼层或其他需要检测的添加进入碰撞体系里 | 默认值 园区地板,如果园区过大,可取消提升性能
+                collisionObjects: [app.scene]  // 把整个场景都添加,可把楼层或其他需要检测的添加进入碰撞体系里 | 默认值 园区地板,如果园区过大,可取消提升性能
+            })
+        );
+    }
+}
+/**
+ * 说明:退出第一人称行走
+ */
+function exitFps() {
+    app.removeControl(fpsCtrl);
+    fpsCtrl = null;
+    cameraFly(cameraInitPos[0], cameraInitPos[1]);
+    // 恢复默认双击事件
+    app.resumeEvent(THING.EventType.DBLClick, '*', THING.EventTag.LevelEnterOperation);
+    // 恢复默认点击事件
+    app.resumeEvent(THING.EventType.Click, '*', THING.EventTag.LevelBackOperation);
+    // 恢复默认拾取事件
+    app.resumeEvent(THING.EventType.Pick, '*', THING.EventTag.LevelPickOperation);
+    // 恢复默认键盘键抬起事件
+    app.resumeEvent(THING.EventType.KeyUp, null, '空格键切换视角');
+    $('#moveByFps').removeClass('active');
+}
+/**
+ * 说明:开启小地图
+ */
+function createMiniMap() {
+    if (miniMapCtrl == null) {
+        // 添加小地图控件
+        miniMapCtrl = app.addControl(new THING.MiniMapControl({
+            width: 200,
+            height: 200,
+            position: THING.CornerType.LeftBottom,
+            opacity: 0.8,
+            scale: 1,
+            angle: 0,
+            mousewheel: true,
+            cameraViewImg: 'http://www.thingjs.com/static/images/minimap1.png',
+            cameraCenterImg: 'http://www.thingjs.com/static/images/minimap0.png'
+        }));
+        $('.minimap').css('border', '1px solid rgba(255, 255, 255, 0.8)');
+        $('.minimap').css('left', '3px');
+        $('.minimap').css('bottom', '3px');
+    } else {
+        destoryMiniMap();
+        createMiniMap();
+    }
+}
+/**
+ * 说明:关闭小地图
+ */
+function destoryMiniMap() {
+    if (miniMapCtrl != null) {
+        app.removeControl(miniMapCtrl);
+        miniMapCtrl = null;
+    }
+}
+/**
+ * 说明:全屏显示
+ */