three实现三维车子走迷宫闯关游戏代码

代码语言:html

所属分类:三维

代码描述:three实现三维车子走迷宫闯关游戏代码,点击放大的黄色圆环切换道岔方向,指示箭头为当前导向;将列车送到紫色环形“目标出口”即可计数。

代码标签: three 实现 三维 车子 迷宫 闯关 游戏 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="utf-8" />
  <title>列车变轨 - Three.js</title>
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />
  <style>
    html, body {
      margin: 0;
      height: 100%;
      overflow: hidden;
      background: #0e0f12;
      color: #e9eef3;
      font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
      user-select: none;
    }
    #hud {
      position: fixed;
      top: 12px;
      left: 12px;
      right: 12px;
      display: flex;
      align-items: center;
      gap: 14px;
      pointer-events: none;
      z-index: 10;
    }
    .pill {
      background: rgba(20,25,30,0.75);
      border: 1px solid rgba(255,255,255,0.08);
      padding: 8px 12px;
      border-radius: 10px;
      pointer-events: auto;
      box-shadow: 0 8px 20px rgba(0,0,0,0.25);
      backdrop-filter: blur(6px);
    }
    .btn {
      cursor: pointer;
      color: #111;
      background: linear-gradient(180deg,#ffd34d,#ffb12a);
      border: none;
      font-weight: 700;
      padding: 8px 12px;
      border-radius: 10px;
      box-shadow: 0 4px 14px rgba(255,177,42,0.35);
      transition: transform .06s ease;
      pointer-events: auto;
    }
    .btn:active { transform: translateY(1px); }
    #panel-right {
      margin-left: auto;
      display: flex;
      gap: 8px;
      pointer-events: auto;
    }
    #msg {
      position: fixed;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      font-size: 20px;
      font-weight: 700;
      padding: 14px 18px;
      border-radius: 12px;
      background: rgba(15,17,20,0.8);
      border: 1px solid rgba(255,255,255,0.08);
      box-shadow: 0 12px 30px rgba(0,0,0,0.35);
      text-align: center;
      white-space: pre-line;
      display: none;
      z-index: 12;
    }
    #help {
      position: fixed;
      bottom: 10px;
      left: 50%;
      transform: translateX(-50%);
      font-size: 13px;
      opacity: 0.9;
      background: rgba(20,25,30,0.6);
      border: 1px solid rgba(255,255,255,0.07);
      padding: 6px 10px;
      border-radius: 10px;
      z-index: 10;
      pointer-events: none;
    }
    a { color: #aee1ff; text-decoration: none; }
  </style>
</head>
<body>
  <div id="hud">
    <div class="pill" id="stats">
      关卡: <span id="level">1</span>
      &nbsp;|&nbsp; 目标送达: <span id="target">0</span>
      &nbsp;|&nbsp; 已送达: <span id="delivered">0</span>
      &nbsp;|&nbsp; 在途列车: <span id="active">0</span>
      &nbsp;|&nbsp; 目标出口仅1个
    </div>
    <div class="pill" id="tips">
      点击放大的黄色圆环切换道岔方向,指示箭头为当前导向;将列车送到紫色环形“目标出口”即可计数。
    </div>
    <div id="panel-right">
      <button class="btn" id="btnStart">开始</button>
      <button class="btn" id="btnPause">暂停</button>
      <button class="btn" id="btnRestart">重开</button>
      <button class="btn" id="btnNext">下一关</button>
    </div>
  </div>
  <div id="help">空格/P:暂停 | R:重开 | N:下一关</div>
  <div id="msg"></div>

  <!-- Three.js(https 显式协议) -->
  <script type="text/javascript" src="https://repo.bfw.wiki/bfwrepo/js/three.146.js"></script>
  <script type="text/javascript" src="https://repo.bfw.wiki/bfwrepo/js/OrbitControls.146.js"></script>

  <script>
    // ========= 基础三件套 =========
    let scene, camera, renderer, controls, raycaster, mouse;
    let levelGroup; // 当前关卡所有物体的组,便于清理
    let lastTime = 0, animHandle = null, clearTimer = null;
    const CLICK_TARGETS = []; // 可点击的道岔圆环 mesh

    // ========= 游戏数据 =========
    const STATE = { MENU:0, RUN:1, PAUSE:2, OVER:3, CLEAR:4 };
    let gameState = STATE.MENU;

    const HUD = {
      level: document.getElementById('level'),
      target: document.getElementById('target'),
      delivered: document.getElementById('delivered'),
      active: document.getElementById('active'),
      msg: document.getElementById('msg'),
      btnStart: document.getElementById('btnStart'),
      btnPause: document.getElementById('btnPause'),
      btnRestart: document.getElementById('btnRestart'),
      btnNext: document.getElementById('.........完整代码请登录后点击上方下载按钮下载查看

网友评论0