{ "metadata": { "type": "App" }, "project": { "shadows": false, "vr": false }, "camera": { "metadata": { "version": 4.4, "type": "Object", "generator": "Object3D.toJSON" }, "object": { "uuid": "B901700E-2B1B-4D74-9201-164193F8304E", "type": "PerspectiveCamera", "name": "Camera", "matrix": [0.9522120356559753,4.608077919243669e-9,-0.3054378032684326,0,-0.17742955684661865,0.8139732480049133,-0.553142249584198,0,0.24861818552017212,0.5809023976325989,0.7750750780105591,0,18.645999908447266,43.56800079345703,58.13100051879883,1], "focalLength": 10, "zoom": 1, "fov": 50, "aspect": 1.3217270194986073, "near": 0.1, "far": 100000 } }, "scene": { "metadata": { "version": 4.4, "type": "Object", "generator": "Object3D.toJSON" }, "geometries": [ { "uuid": "713F75F5-5D04-4069-89CB-2035F5619AC3", "type": "PlaneGeometry", "width": 60, "height": 40, "widthSegments": 1, "heightSegments": 1 }, { "uuid": "4537EA66-3CD6-43A1-97A9-EB59F3258BF9", "type": "BoxGeometry", "width": 1, "height": 1, "depth": 1, "widthSegments": 1, "heightSegments": 1, "depthSegments": 1 }, { "uuid": "3C546CA4-FF0F-4BA1-9406-0CD0D560A396", "type": "BoxGeometry", "width": 2, "height": 2, "depth": 10, "widthSegments": 1, "heightSegments": 1, "depthSegments": 1 }, { "uuid": "4628F4A7-D572-45C2-9A67-807D71FF19EC", "type": "BoxGeometry", "width": 2, "height": 2, "depth": 10, "widthSegments": 1, "heightSegments": 1, "depthSegments": 1 }], "materials": [ { "uuid": "7EDF7C08-6325-418A-BBAB-89341C694730", "type": "MeshPhongMaterial", "color": 16777215, "emissive": 0, "specular": 16777215, "shininess": 30 }, { "uuid": "B1CAF098-FE36-45E1-BEBE-8D6AC04821CC", "type": "MeshPhongMaterial", "color": 16711680, "emissive": 0, "specular": 1118481, "shininess": 30 }, { "uuid": "FBDBE66D-B613-4741-802D-5AE1DE07DE46", "type": "MeshPhongMaterial", "color": 2752767, "emissive": 0, "specular": 1118481, "shininess": 30 }], "object": { "uuid": "31517222-A9A7-4EAF-B5F6-60751C0BABA3", "type": "Scene", "name": "Scene", "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1], "children": [ { "uuid": "B47D0BFC-D63A-4CBB-985E-9C4DBDF086E4", "type": "Mesh", "name": "Ground", "matrix": [1,0,0,0,0,0.0007960238144733012,-0.9999997019767761,0,0,0.9999997019767761,0.0007960238144733012,0,0,-1,0,1], "geometry": "713F75F5-5D04-4069-89CB-2035F5619AC3", "material": "7EDF7C08-6325-418A-BBAB-89341C694730" }, { "uuid": "CE13E58A-4E8B-4F72-9E2E-7DE57C58F989", "type": "Mesh", "name": "Ball", "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1], "geometry": "4537EA66-3CD6-43A1-97A9-EB59F3258BF9", "material": "B1CAF098-FE36-45E1-BEBE-8D6AC04821CC" }, { "uuid": "2AAEA3AA-EC45-492B-B450-10473D1EC6C5", "type": "Mesh", "name": "Pad 1", "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,-24,0,0,1], "geometry": "3C546CA4-FF0F-4BA1-9406-0CD0D560A396", "material": "FBDBE66D-B613-4741-802D-5AE1DE07DE46" }, { "uuid": "F1DD46A7-6584-4A37-BC76-852C3911077E", "type": "Mesh", "name": "Pad 2", "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,24,0,0,1], "geometry": "4628F4A7-D572-45C2-9A67-807D71FF19EC", "material": "FBDBE66D-B613-4741-802D-5AE1DE07DE46" }, { "uuid": "C62AAE9F-9E51-46A5-BD2B-71BA804FC0B3", "type": "DirectionalLight", "name": "DirectionalLight 3", "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,10,20,15,1], "color": 16777215, "intensity": 1 }] } }, "scripts": { "31517222-A9A7-4EAF-B5F6-60751C0BABA3": [ { "name": "Game logic", "source": "var ball = this.getObjectByName( 'Ball' );\n\nvar position = ball.position;\n\nvar velocity = new THREE.Vector3();\n\nvar direction = new THREE.Vector3();\ndirection.x = Math.random() - 0.5;\ndirection.z = Math.random() - 0.5;\ndirection.normalize();\n\nvar pad1 = this.getObjectByName( 'Pad 1' );\nvar pad2 = this.getObjectByName( 'Pad 2' );\n\nvar raycaster = new THREE.Raycaster();\nvar objects = [ pad1, pad2 ];\n\n//\n\nfunction mousemove( event ) {\n\n\tpad1.position.z = ( event.clientX / player.width ) * 30 - 15;\n\tpad2.position.z = - pad1.position.z;\n\n}\n\nfunction update( event ) {\n\t\n\tif ( position.x < -30 || position.x > 30 ) direction.x = - direction.x;\n\tif ( position.z < -20 || position.z > 20 ) direction.z = - direction.z;\n\t\n\tposition.x = Math.max( - 30, Math.min( 30, position.x ) );\n\tposition.z = Math.max( - 20, Math.min( 20, position.z ) );\n\t\n\traycaster.set( position, direction );\n\t\n\tvar intersections = raycaster.intersectObjects( objects );\n\t\n\tif ( intersections.length > 0 ) {\n\n\t\tvar intersection = intersections[ 0 ];\n\t\t\n\t\tif ( intersection.distance < 1 ) {\n\t\t\t\n\t\t\tdirection.reflect( intersection.face.normal );\n\t\t\t\n\t\t}\n\t\t\n\t}\n\n\tposition.add( velocity.copy( direction ).multiplyScalar( event.delta / 20 ) );\n\n}" }] } }