three实现逼真三维山地赛车游戏代码

代码语言:html

所属分类:游戏

代码描述:three实现逼真三维山地赛车游戏代码。

代码标签: three 逼真 三维 山地 赛车 游戏 代码

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

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>巅峰山道 · SKYLINE RALLY</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Russo+One&family=ZCOOL+QingKe+HuangYou&family=Noto+Sans+SC:wght@400;500;700&display=swap" rel="stylesheet">
<style>
:root{
  --ink:#0d131c; --panel:#141c28; --panel2:#1c2635; --line:#2c3a4e;
  --paper:#f5f1e6; --amber:#ffb43a; --red:#e8452e; --mint:#7fd6c2;
  --disp:'ZCOOL QingKe HuangYou',system-ui; --num:'Russo One',monospace; --body:'Noto Sans SC',system-ui,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden;background:var(--ink);font-family:var(--body);color:var(--paper)}
canvas{display:block}
#app{position:fixed;inset:0}
.hide{opacity:0!important;visibility:hidden!important;pointer-events:none!important}

.panel{background:linear-gradient(160deg,var(--panel),#10161f);border-left:4px solid var(--amber);
  box-shadow:6px 6px 0 rgba(0,0,0,.45);transform:skewX(-8deg)}
.panel>.in{transform:skewX(8deg)}

#hud{position:fixed;inset:0;pointer-events:none;z-index:5}
#hud::before{content:'';position:absolute;inset:0 0 auto 0;height:120px;background:linear-gradient(rgba(8,11,17,.55),transparent)}
#timePanel{position:absolute;top:18px;left:18px;padding:10px 22px 12px 16px;min-width:230px}
#timePanel .row{display:flex;justify-content:space-between;gap:18px;align-items:baseline;font-size:12px;letter-spacing:.14em;color:#9fb0c4}
#timePanel .row b{font-family:var(--num);font-size:21px;color:var(--paper);letter-spacing:.04em;font-weight:400}
#timePanel .row.best b{color:var(--mint)}
#altPanel{position:absolute;top:18px;right:18px;padding:9px 18px 11px 14px;text-align:right;border-left:none;border-right:4px solid var(--red);transform:skewX(8deg)}
#altPanel .in{transform:skewX(-8deg)}
#altPanel .lab{font-size:11px;letter-spacing:.2em;color:#9fb0c4}
#altPanel b{font-family:var(--num);font-size:20px;font-weight:400}
#altPanel span.unit{font-size:11px;color:#9fb0c4;margin-left:3px}

#speedo{position:absolute;right:22px;bottom:22px;padding:14px 26px 16px 20px;text-align:right}
#speedo .rpm{width:210px;height:9px;background:#0a0f16;border:1px solid var(--line);margin-left:auto;overflow:hidden}
#speedo .rpm i{display:block;height:100%;width:100%;transform-origin:right;transform:scaleX(0);
  background:linear-gradient(270deg,var(--red) 0 18%,var(--amber) 45%,var(--mint) 100%)}
#speedo .big{font-family:var(--num);font-size:66px;line-height:1;color:var(--paper);text-shadow:3px 3px 0 rgba(0,0,0,.5)}
#speedo .big small{font-size:15px;color:#9fb0c4;letter-spacing:.15em;margin-left:6px}
#speedo .gear{position:absolute;left:-16px;bottom:14px;background:var(--amber);color:var(--ink);
  font-family:var(--num);font-size:26px;padding:6px 13px;box-shadow:4px 4px 0 rgba(0,0,0,.45)}

#mapPanel{position:absolute;left:22px;bottom:22px;padding:10px 14px 12px}
#mapPanel .tit{font-family:var(--disp);font-size:14px;letter-spacing:.3em;color:var(--amber);margin-bottom:6px}
#minimap{display:block;background:#0a0f16;border:1px solid var(--line)}

#hints{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);font-size:12px;color:#b9c6d6;
  background:rgba(13,19,28,.72);padding:6px 16px;white-space:nowrap;transition:opacity 1s}
#hints kbd{font-family:var(--num);font-size:11px;background:var(--panel2);border:1px solid var(--line);
  border-bottom-width:2px;padding:1px 7px;margin:0 3px;color:var(--paper)}

#msg{position:absolute;top:21%;left:50%;transform:translateX(-50%);font-family:var(--disp);font-size:44px;
  letter-spacing:.1em;color:var(--paper);text-shadow:4px 4px 0 rgba(0,0,0,.6);opacity:0;white-space:nowrap}
#msg.show{animation:pop .45s cubic-bezier(.2,1.6,.4,1) forwards}
#msg.gold{color:var(--amber)} #msg.warn{color:var(--red)}
@keyframes pop{from{opacity:0;transform:translateX(-50%) scale(.6) rotate(-3deg)}to{opacity:1;transform:translateX(-50%) scale(1)}}

#wrong{position:absolute;top:34%;left:50%;transform:translateX(-50%);font-family:var(--disp);font-size:34px;
  color:var(--red);letter-spacing:.2em;animation:blink .5s steps(2) infinite}
@keyframes blink{50%{opacity:.15}}

#cd{position:absolute;top:7%;left:50%;transform:translateX(-50%) skewX(-8deg);display:flex;gap:15px;
  background:linear-gradient(160deg,var(--panel),#0e141d);padding:15px 26px;border-left:4px solid var(--amber);
  box-shadow:6px 6px 0 rgba(0,0,0,.45)}
#cd i{width:27px;height:27px;border-radius:50%;background:#33232a;box-shadow:inset 0 0 6px #000;transition:.12s}
#cd i.on{background:var(--red);box-shadow:0 0 20px var(--red),inset 0 0 4px #ffb1a3}

#vig{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 52%,rgba(6,9,15,.62));opacity:0}

#menu{position:fixed;inset:0;z-index:20;display:flex;align-items:center;
  background:linear-gradient(100deg,rgba(9,12,19,.94) 0%,rgba(9,12,19,.82) 34%,rgba(9,12,19,.15) 68%,transparent);
  transition:opacity .5s,visibility .5s}
#menu .wrap{padding:0 6vw;max-width:640px}
.eyebrow{display:flex;align-items:center;gap:12px;font-family:var(--num);font-size:13px;letter-spacing:.42em;color:var(--amber)}
.eyebrow::before{content:'';width:54px;height:12px;background:repeating-conic-gradient(var(--paper) 0 25%,var(--ink) 0 50%) 0 0/12px 12px}
#.........完整代码请登录后点击上方下载按钮下载查看

网友评论0