three实现三维城堡收集旗帜第一人称视角游戏代码

代码语言:html

所属分类:游戏

代码描述:three实现三维城堡收集旗帜第一人称视角游戏代码

代码标签: three 三维 城堡 收集 旗帜 第一 人称 视角 游戏 代码

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

<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8" />
  <title>三维城堡小游戏(Three.js)</title>
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <style>
    html,body { height:100%; margin:0; overflow:hidden; font-family:system-ui,Segoe UI,Roboto,'Helvetica Neue',Arial;}
    #overlay {
      position: absolute; left:10px; top:10px; color:#fff;
      background: rgba(0,0,0,0.4); padding:8px 12px; border-radius:6px;
    }
    #blocker {
      position:absolute; inset:0; background: rgba(0,0,0,0.6); display:flex;
      align-items:center; justify-content:center; color:#fff; z-index:2;
      flex-direction:column;
    }
    button { padding:12px 18px; font-size:16px; border-radius:6px; cursor:pointer; }
    canvas { display:block; }
  </style>
</head>
<body>
  <div id="blocker">
    <h1 style="margin:0 0 12px 0">点击开始 — 三维城堡小游戏</h1>
    <div style="max-width:520px;text-align:center;margin-bottom:12px">鼠标控制视角,W/A/S/D 移动,空格跳跃。搜集所有旗帜!</div>
    <button id="startBtn">开始(请求鼠标控制)</button>
  </div>
  <div id="overlay">Flags: <span id="score">0</span> / <span id="total">0</span></div>

  <!-- 使用模块导入 Three.js(CDN) -->

<script type="importmap">
{
 "imports":{
    "three":"//repo.bfw.wiki/bfwrepo/js/module/three/build/164/three.module.js",
    "three/addons/":"//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/"
 }
}
</script>
<!-- 使用模块 -->
<script type="module">
  import * as THREE from "three";
  import { PointerLockControls } from "three/addons/controls/PointerLockControls.js";

    // ---- 基本场景与渲染器 ----
    const scene = new THREE.Scene();
    scene.background = new THREE.Color(0x87CEEB); // 天空颜色

    const camera = new THREE.PerspectiveCamera(75, innerWidth/innerHeight, 0.1, 2000);
    camera.position.set(0, 2, 8);

    const renderer = new THREE.WebGLRenderer({antialias:true});
    renderer.setSize(innerWidth, innerHeight);
    renderer.shadowMap.enabled = true;
    document.body.appendChild(renderer.domElement);

    window.addEventListener('resize', ()=> {
      camera.aspect = innerWidth/innerHeight;
      camera.updateProjectionMatrix();
      renderer.setSize(innerWidth, innerHeight);
    });

    // ---- 光源 ----
    const hemi = new THREE.HemisphereLight(0xffffff, 0x444444, 0.7).........完整代码请登录后点击上方下载按钮下载查看

网友评论0