冲突检测Three.js的问题

密码1

我试图用three.js制作3D Breakout游戏。我对墙壁进行了大多数碰撞检测,但似乎无法对桨进行碰撞。

这是我的代码:

    //three.Breakout, a 3D breakout game by Samuel Steele, Cryptocosm
    Play();
    function Play() {
    //Declare our scene and camera, easy start up stuff like golabal vars
    var width = window.innerWidth;
    var height = window.innerHeight;
    var velocityX = -1, velocityZ = -2;
    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera( 75, width / height, .1, 1000 );

    //initiate the WebGL Context
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(width, height);
    document.body.appendChild(renderer.domElement);

    //create a light
    var light = new THREE.PointLight( 0xecf0f1, 1.3, 600 );
    light.position.set( 0, 0, 32 );
    //add the light to the scene
    scene.add(light);

    //make the paddle
    var paddleGeometry = new THREE.CubeGeometry(30, 8, 3);
    var paddleMaterial = new THREE.MeshLambertMaterial({
        color: 0xF7F7F7, 
        shading: THREE.FlatShading
    });

    var paddle = new THREE.Mesh(paddleGeometry, paddleMaterial);

    var lBarGeometry = new THREE.CubeGeometry(10, 10, 100);
    var lBarMaterial = new THREE.MeshLambertMaterial({
        color: 0xbdc3c7,
        shading: THREE.FlatShading
    });
    var leftBar = new THREE.Mesh(lBarGeometry, lBarMaterial);

    var rBarGeometry = new THREE.CubeGeometry(10, 10, 100);
    var rBarMaterial = new THREE.MeshLambertMaterial({
        color: 0xbdc3c7,
        shading: THREE.FlatShading
    });
    var rightBar = new THREE.Mesh(rBarGeometry, rBarMaterial);

    var backGeometry = new THREE.CubeGeometry(130, 10, 10);
    var backMaterial = new THREE.MeshLambertMaterial({
        color: 0xbdc3c7,
        shading: THREE.FlatShading
    });
    var back = new THREE.Mesh(backGeometry, backMaterial);


    var ballGeometry = new THREE.CubeGeometry(7, 7, 7);
    var ballMaterial = new THREE.MeshLambertMaterial({
        color: 0xbdc3c7,
        shading: THREE.FlatShading,
        wireframe: false
    });
    var ball = new THREE.Mesh(ballGeometry, ballMaterial);

    //add our objects to the scene
    scene.add(paddle);
    scene.add(leftBar);
    scene.add(rightBar);
    scene.add(back);
    scene.add(ball);

    //position errythang
        //the camera
    camera.position.z = 50;
        //the paddle
    paddle.position.y = -27; 
    paddle.position.z = 5;
        //the left sideBar
    leftBar.position.x = -60;
    leftBar.position.y = -27;
    leftBar.position.z = -40;
        //the right sideBar
    rightBar.position.x = 60;
    rightBar.position.y = -27;
    rightBar.position.z = -40;
        //the back bar
    back.position.z = -90;
    back.position.y = -27;
        //the ball
    ball.position.y = -27;


    var render = function () {
        //if the ball hits the side bars
    if(ball.position.x > 50 || ball.position.x < -50) {
            velocityX = -velocityX;
    }; 
        //if the ball hits the back wall
    if(ball.position.z < -80) {
        velocityZ = -velocityZ;
    };



        // move ball
        ball.position.x += velocityX;
        ball.position.z += velocityZ;
        requestAnimationFrame(render);

        //ball.rotation.y += Math.floor(Math.random()*100);

        renderer.render(scene, camera);

    };

    document.addEventListener("keydown", onDocumentKeyDown, false);

    function onDocumentKeyDown(event){
        // Get the key code of the pressed key
        var keyCode = event.which;
        switch(keyCode) {
            //Left key pressed
                case 37: paddle.position.x -= 20, console.log(paddle.position.x);
            break;
            //Right key pressed
                case 39: paddle.position.x += 20, console.log(paddle.position.x);
            break;
            //If anything else is pressed
                default: console.error('OH LAWD!');
            break;
        }

        }
    render();
    }

此代码的一个实时示例在这里,并且我正在使用Three.js r62

德韦洛特卡

使用此框架很容易:http : //chandlerprall.github.io/Physijs/,以实现物理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Three.js碰撞检测问题

来自分类Dev

如何使用Three.js检测JavaScript中两个对象之间的冲突?

来自分类Dev

rect冲突检测d3js

来自分类Dev

HTML5 Canvas JS上的冲突检测

来自分类Dev

Three.js-渲染问题-动画震撼

来自分类Dev

Three.js-CanvasRenderer问题:平面着色?

来自分类Dev

面向移动设备的Three.js问题

来自分类Dev

Potree / Three.js测量问题

来自分类Dev

OBJ Loader THREE.JS问题

来自分类Dev

three.js OrbitControls与HTML5 Canvas冲突吗?

来自分类Dev

冲突的库:Fullpage.js和ScrollMagic问题

来自分类Dev

冲突的库:Fullpage.js和ScrollMagic问题

来自分类Dev

Three.js-关于(使用)THREE.BufferGeometry的问题

来自分类Dev

Three.js-准确的射线投射以进行碰撞检测

来自分类Dev

Three.js Raycaster未检测到场景网格

来自分类Dev

Three.js碰撞检测与光线投射优化

来自分类Dev

使用three.js的FPS游戏中的碰撞检测

来自分类Dev

Three.js检测对象何时被部分或完全遮挡

来自分类Dev

Three.js Raycaster未检测到场景网格

来自分类Dev

THREE.js静态场景,检测Webgl渲染何时完成

来自分类Dev

使用three.js的FPS游戏中的碰撞检测

来自分类Dev

在three.js中制作突破游戏 - 检测板的末端

来自分类Dev

使用three.js进行碰撞检测

来自分类Dev

DOM问题无法检测香草JS中的变化值

来自分类Dev

碰撞检测的问题是JS画布游戏

来自分类Dev

如何用Three / js和oimo.js抵消模型冲突

来自分类Dev

Three.js ParticleSystem透明性问题

来自分类Dev

Three.JS Collada模型大小内存问题

来自分类Dev

three.js中数千行的性能问题