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