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