今天给大家带来的源码分享主题是《兔子快跑:勇敢者的花式逃亡》。这个小游戏不仅名字有趣,玩法也非常简单刺激。玩家控制一只英勇的小兔子,在一片充满挑战的森林中飞奔,途中需要避开刺猬的阻拦并尽可能多地收集胡萝卜,简直就是一场“命悬一线”的紧张冒险!
1. 技术概览
这款游戏的核心技术栈包括 Three.js 和 GSAP。Three.js 用于创建和渲染3D场景,让游戏画面更具立体感;而 GSAP 则负责动画效果,使得小兔子的跳跃、跑动等动作更加流畅和生动。
Three.js:这是一个强大的 3D 渲染库,可以轻松构建复杂的3D场景。在这个游戏中,Three.js 负责绘制小兔子、刺猬、胡萝卜等所有的3D模型。
GSAP:这是一款高性能的动画库,广泛应用于各种Web动画项目。在游戏中,GSAP 负责处理小兔子的跑动动画、跳跃动画以及碰撞后的特效。
2. 游戏玩法
玩家需要点击屏幕让小兔子跳跃,避开沿途的刺猬障碍,并收集胡萝卜。随着时间的推移,游戏的速度会逐渐加快,增加了挑战难度。游戏结束后,可以点击重新开始,再次挑战更高的分数。
3. 源码部分
html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r80/three.js"></script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script>
<script defer src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/OrbitControls.js"></script>
<script defer src="main.js"></script>
<title>兔子快跑 </title>
</head>
<body>
<div id="world"></div>
<div id="gameoverInstructions">
Game Over
</div>
<div id="dist">
<div class="label">distance</div>
<div id="distValue">000</div>
</div>
<div id="instructions">Click to jump<span class="lightInstructions"> — Grab the carrots / avoid the hedgehogs</span></div>
<div id="credits">
<p><a href="#" target="blank">other codepens</a> | <a href="#" target="blank">前端达人</a></p>
</div>
</body>
</html>
css代码
/* author: https://codepen.io/Yakudoo/pen/YGxYej
Karim Maaloul
*/
@import url("https://fonts.googleapis.com/css?family=Voltaire");
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
#world {
position: absolute;
width: 100%;
height: 100%;
background-color: #dbe6e6;
overflow: hidden;
}
#gameoverInstructions {
position: absolute;
font-family: "Voltaire", sans-serif;
font-weight: bold;
text-transform: uppercase;
font-size: 120px;
text-align: center;
color: #ffc5a2;
opacity: 0;
left: 50%;
top: 50%;
width: 100%;
transform: translate(-50%, -100%);
user-select: none;
transition: all 500ms ease-in-out;
}
#gameoverInstructions.show {
opacity: 1;
transform: translate(-50%, -50%);
transition: all 500ms ease-in-out;
}
#dist {
position: absolute;
left: 50%;
top: 50px;
transform: translate(-50%, 0%);
user-select: none;
}
.label {
position: relative;
font-family: "Voltaire", sans-serif;
text-transform: uppercase;
color: #ffa873;
font-size: 12px;
letter-spacing: 2px;
text-align: center;
margin-bottom: 5px;
}
#distValue {
position: relative;
text-transform: uppercase;
color: #dc5f45;
font-size: 40px;
font-family: "Voltaire";
text-align: center;
}
#credits {
position: absolute;
width: 100%;
margin: auto;
bottom: 0;
margin-bottom: 20px;
font-family: "Voltaire", sans-serif;
color: #544027;
font-size: 12px;
letter-spacing: 0.5px;
text-transform: uppercase;
text-align: center;
user-select: none;
}
#credits a {
color: #544027;
}
#credits a:hover {
color: #dc5f45;
}
#instructions {
position: absolute;
width: 100%;
bottom: 0;
margin: auto;
margin-bottom: 50px;
font-family: "Voltaire", sans-serif;
color: #dc5f45;
font-size: 16px;
letter-spacing: 1px;
text-transform: uppercase;
text-align: center;
user-select: none;
}
.lightInstructions {
color: #5f9042;
}
js代码
由于代码内容过长,请下载源码查看
源码下载
链接: https://pan.baidu.com/s/1fDU0atw4n9NNlCjrT4_Emw?pwd=bge5
提取码: bge5
结束
这个小游戏非常适合作为学习 Three.js 和 GSAP 的入门项目。通过阅读和分析源码,你可以了解到如何构建一个完整的 3D 游戏场景,以及如何通过动画库来丰富游戏体验。如果你对 Web 开发或游戏开发感兴趣,这个项目绝对是一个不错的起点。
希望大家通过这次分享,能够激发起对 3D 游戏开发的兴趣,并且动手尝试实现自己的创意!如果你有任何问题或者心得,欢迎在评论区讨论哦!