three实现带随机天气系统的逼真山水三维场基漫游体验代码
代码语言:html
所属分类:三维
代码描述:three实现带随机天气系统的逼真山水三维场基漫游体验代码,可移动位置,可游泳,可爬山,可切换天气。
代码标签: three 随机 天气 系统 逼真 山水 三维 场基 漫游 体验 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>三维山水世界 · 第一人称漫游</title>
<style>
html,body{margin:0;height:100%;overflow:hidden;background:#000;font-family:"Microsoft YaHei",Arial,sans-serif;}
#overlay{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
background:rgba(0,0,0,.65);color:#fff;cursor:pointer;z-index:20;text-align:center;}
#overlay h1{font-size:34px;margin:0 0 14px;letter-spacing:4px}
#overlay p{margin:4px;font-size:15px;opacity:.9}
#overlay .tip{margin-top:22px;font-size:18px;color:#9fe0ff}
#hud{position:fixed;left:14px;top:14px;color:#fff;font-size:13px;background:rgba(0,0,0,.38);
padding:10px 14px;border-radius:8px;line-height:1.7;pointer-events:none;text-shadow:0 1px 2px #000;z-index:5;min-width:190px}
#hud b{color:#ffe08a}
#crosshair{position:fixed;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;
background:rgba(255,255,255,.85);box-shadow:0 0 4px #000;pointer-events:none;z-index:5}
#flash{position:fixed;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:6}
#loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;
background:#111;font-size:20px;z-index:30;letter-spacing:2px}
</style>
</head>
<body>
<div id="loading">正在生成世界,请稍候…</div>
<div id="overlay">
<h1>山 · 水 · 林 · 天</h1>
<p>鼠标:转动视角 | W A S D:移动 | Shift:奔跑 | 空格:跳跃</p>
<p>T:立即切换天气 | ESC:释放鼠标</p>
<p>可以爬上山顶,走进湖里会开始游泳</p>
<div class="tip">点击任意位置开始</div>
</div>
<div id="hud"></div>
<div id="crosshair"></div>
<div id="flash"></div>
<script type="importmap">
{
"imports": {
"three": "https://unpkg.com/three@0.160.0/build/three.module.js",
"three/addons/": "https://unpkg.com/three@0.160.0/examples/jsm/"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js';
import { Water } from 'three/addons/objects/Water.js';
import { Sky } from 'three/addons/objects/Sky.js';
/* ==================================================================
1. 噪声工具(2D Simplex)
================================================================== */
class Noise {
constructor(seed = 1337) {
const perm = [];
for (let i = 0; i < 256; i++) perm[i] = i;
let s = seed;
const rnd = () => { s = (s * 16807) % 2147483647; return s / 2147483647; };
for (let i = 255; i > 0; i--) { const j = Math.floor(rnd() * (i + 1)); [perm[i], perm[j]] = [perm[j], perm[i]]; }
this.p = new Uint8Array(512);
for (let i = 0; i < 512; i++) this.p[i] = perm[i & 255];
}
grad(h, x, y) { h &= 7; const u = h < 4 ? x : .........完整代码请登录后点击上方下载按钮下载查看















网友评论0