three实现一个三维堆积木小游戏效果代码

代码语言:html

所属分类:游戏

代码描述:three实现一个三维堆积木小游戏效果代码

代码标签: 三维 积木 小游戏 效果

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

<html>
<head>
    <meta name="viewport" content="width=device-width,user-scalable=no">
    <style>
@import url("https://fonts.googleapis.com/css?family=Comfortaa");
        html, body {
            margin: 0;
            overflow: hidden;
            height: 100%;
            width: 100%;
            position: relative;
            font-family: "Comfortaa", cursive;
        }

        #container {
            width: 100%;
            height: 100%;
        }
        #container #score {
            position: absolute;
            top: 20px;
            width: 100%;
            text-align: center;
            font-size: 10vh;
            transition: transform 0.5s ease;
            color: #333344;
            transform: translatey(-200px) scale(1);
        }
        #container #game {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
        }
        #container .game-over {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 85%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
        #container .game-over * {
            transition: opacity 0.5s ease, transform 0.5s ease;
            opacity: 0;
            transform: translatey(-50px);
            color: #333344;
        }
        #container .game-over h2 {
            margin: 0;
            padding: 0;
            font-size: 40px;
        }
        #container .game-ready {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-around;
        }
        #container .game-ready #start-button {
            transition: opacity 0.5s ease, transform 0.5s ease;
            opacity: 0;
            transform: translatey(-50px);
            border: 3px solid #333344;
            padding: 10px 20px;
            background-color: transparent;
            color: #333344;
            font-size: 30px;
        }
        #container #instructions {
            position: absolute;
            width: 100%;
            top: 16vh;
            left: 0;
            text-align: center;
            transition: opacity 0.5s ease, transform 0.5s ease;
            opacity: 0;
        }
        #container #instructions.hide {
            opacity: 0 !important;
        }
        #container.playing #score, #container.resetting #score {
            transform: translatey(0px) scale(1);
        }
        #container.playing #instructions {
            opacity: 1;
        }
        #container.ready .game-ready #start-button {
            opacity: 1;
            transform: translatey(0);
        }
        #container.ended #score {
            transform: translatey(6vh) scale(1.5);
        }
        #container.ended .game-over * {
            opacity: 1;
            transform: translatey(0);
        }
        #container.ended .game-over p {
            transition-delay: 0.3s;
        }
    </style>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.84.js"></script>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/TweenMax.min.js"></script>


</head>
<body>



    <div id="container">
        <div id="game"></div>
        <div id="score">
            0
        </div>
        <div id="instructions">
            单击鼠标(或按下空格键)放置方块
        </div>
        <div class="game-over">
            <h2>Game Over</h2>
            <p>
                You did great, you're the best.
            </p>
            <p>
                Click or spacebar to start again
            </p>
        </div>
        <div class="game-ready">
            <div id="start-button">
                Start
            </div>
            <div></div>
        </div>
    </div>
    <script>
        "use strict";
        console.clear();
        class Stage {
            constructor() {
                // container
                this.render = function () {
                    this.renderer.render(this.scene, this.camera);
                };
                this.add = function (elem) {
                    this.scene.add(elem);
                };
                this.remove = function (elem) {
                    this.scene.remove(elem);
                };
                this.container = document.getElementById('game');
                // renderer
                this.renderer = new THREE.WebGLRenderer({
                    antialias: true,
                    alpha: false
                });
                this.renderer.setSize(window.innerWidth, window.innerHeight);
                this.renderer.setClearColor('#2ab4ff', 1);
                this.container.appendChild(this.renderer.domElement);
                // scene
                this.scene = new THREE.Scene();
                // camera
                let aspect = window.innerWidth / window.innerHeight;
                let d = 20;
                this.camera = new THREE.OrthographicCamera(-d * aspect, d * aspect, d, -d, -100, 1000);
                this.camera.position.x = 2;
                this.camera.position.y = 2;
                this.camera.position.z = 2;
                this.camera.lookAt(new THREE.Vector3(0, 0, 0));
                //light
                this.light = new THREE.DirectionalLight(0xffffff, 0.5);
                this.light.position.set(0, 499, 0);
                this.scene.add(this.light);
                this.softLight = new THREE.AmbientLight(0xffffff, 0.4);
                this.scene.add(this.softLight);
                window.addEventListener('resize', () => this.onResize());
                this.onResize();
            }
            setCamera(y, speed = 0.3) {
                TweenLite.to(this.camera.position, speed, {
                    y: y + 4, ease: Power1.easeInOut
                });
                TweenLite.to(this.camera.lookAt, speed, {
                    y: y, ease: Power1.easeInOut
                });
            }
            onResize() {
                let viewSize = 30;
                this.renderer.setSize(window.innerWidth, window.innerHeight);
                this.camera.left = window.innerWidth / -viewSize;
                this.camera.right = window.innerWidth / viewSize;
                this.camera.top = window.innerHeight / viewSize;
                this.camera.bottom = window.innerHeight / -viewSize;
                this.camera.updateProjectionMatrix();
            }
        }
        class Block {
            constructor(block) {
   .........完整代码请登录后点击上方下载按钮下载查看

网友评论0