three+cannon实现三维方块搭积木游戏效果代码

代码语言:html

所属分类:游戏

代码描述:three+cannon实现三维方块搭积木游戏效果代码,

代码标签: cannon three 三维 方块 积木 游戏

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

<!DOCTYPE html>
<html lang="en">

<head>

   
<meta charset="UTF-8">




   
<style>
       
@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@900&display=swap");
       
        body
{
         
margin: 0;
         
color: white;
         
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
         
cursor: pointer;
       
}
       
       
#instructions {
         
display: none;
       
}
       
       
#results,
       
body:hover #instructions {
         
position: absolute;
         
display: flex;
         
align-items: center;
         
justify-content: center;
         
height: 100%;
         
width: 100%;
         
background-color: rgba(20, 20, 20, 0.75);
       
}
       
       
a:visited {
         
color: inherit;
       
}
       
       
#results {
         
display: none;
         
cursor: default;
       
}
       
       
#results .content,
       
#instructions .content {
         
max-width: 300px;
         
padding: 50px;
         
border-radius: 20px;
       
}
       
       
#results {
       
}
       
       
#score {
         
position: absolute;
         
color: white;
         
font-size: 3em;
         
font-weight: bold;
         
top: 30px;
         
right: 30px;
       
}
       
       
#youtube,
       
#skillshare,
       
#youtube-card,
       
#skillshare-card {
         
display: none;
         
color: black;
       
}
       
       
@media (min-height: 425px) {
         
/** Youtube logo by https://codepen.io/alvaromontoro */
         
#youtube,
         
#skillshare {
           
z-index: 50;
           
width: 100px;
           
height: 70px;
           
position: fixed;
           
bottom: 20px;
           
transform: scale(0.8);
           
transition: transform 0.5s;
         
}
       
         
#youtube {
           
display: block;
           
background: red;
           
right: 20px;
           
border-radius: 50% / 11%;
         
}
       
         
#skillshare {
           
display: block;
           
left: 20px;
           
color: white;
           
font-size: 1.8em;
           
font-weight: extra-bold;
           
font-family: "Montserrat", sans-serif;
           
text-decoration: none;
         
}
       
         
#youtube:hover,
         
#youtube:focus {
           
transform: scale(0.9);
           
color: black;
         
}
       
         
#skillshare:hover,
         
#skillshare:focus {
           
transform: scale(0.9);
           
color: #002333;
         
}
       
         
#youtube::before {
           
content: "";
           
display: block;
           
position: absolute;
           
top: 7.5%;
           
left: -6%;
           
width: 112%;
           
height: 85%;
           
background: red;
           
border-radius: 9% / 50%;
         
}
       
         
#youtube::after {
           
content: "";
           
display: block;
           
position: absolute;
           
top: 20px;
           
left: 40px;
           
width: 45px;
           
height: 30px;
           
border: 15px solid transparent;
           
box-sizing: border-box;
           
border-left: 30px solid white;
         
}
       
         
#youtube span {
           
font-size: 0;
           
position: absolute;
           
width: 0;
           
height: 0;
           
overflow: hidden;
         
}
       
         
#youtube:hover + #youtube-card,
         
#skillshare:hover + #skillshare-card {
           
z-index: 49;
           
display: block;
           
position: fixed;
           
bottom: 12px;
           
width: 300px;
           
background-color: white;
         
}
       
         
#youtube:hover + #youtube-card {
           
right: 10px;
           
padding: 25px 130px 25px 25px;
         
}
       
         
#skillshare:hover + #skillshare-card {
           
left: 10px;
           
padding: 25px 25px 25px 130px;
         
}
       
}
   
</style>


</head>

<body>
   
<div id="instructions">
       
<div class="content">
           
<p>把积木叠在一起</p>
           
<p>当块位于积木上方时,单击、轻按或按空格键。你能够到蓝色的色块吗?</p>
           
<p>单击、轻按或按空格键开始游戏</p>
       
</div>
   
</div>
   
<div id="results">
       
<div class="content">
           
<p>失败了</p>
           
<p>按键盘R键重新开始游戏</p>

       
</div>
   
</div>
   
<div id="score">0</div>




   
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.123.js"></script>
   
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/cannon.js"></script>
   
<script>
        window.focus(); // Capture keys right away (by default focus is on editor)
       
        let camera, scene, renderer; // ThreeJS globals
        let world; // CannonJs world
        let lastTime; // Last timestamp of animation
        let stack; // Parts that stay solid on top of each other
        let overhangs; // Overhanging parts that fall down
        const boxHeight = 1; // Height of each layer
        const originalBoxSize = 3; // Original width and height of a box
        let autopilot;
        let gameEnded;
        let robotPrecision; // Determines how precise the game is on autopilot
       
        const scoreElement = document.getElementById("score");
        const instructionsElement = document.getElementById("instructions");
        const resultsElement = document.getElementById("results");
       
        init();
       
        // Determines how precise the game is on autopilot
        function setRobotPrecision() {
          robotPrecision = Math.random() * 1 - 0.5;
        }
       
        function init() {
          autopilot = true;
          gameEnded = false;
          lastTime = 0;
          stack = [];
          overhangs = [];
          setRobotPrecision();
       
          // Initialize .........完整代码请登录后点击上方下载按钮下载查看

网友评论0