diff --git a/site/real_game/class/Ball.js b/site/real_game/class/Ball.js index 53880c0..ac0b3fd 100644 --- a/site/real_game/class/Ball.js +++ b/site/real_game/class/Ball.js @@ -6,7 +6,7 @@ /* By: edbernar +#+ +:+ +#+ */ +/* By: edbernar { + if (e.key == 'q') + { + for (let i = 0; i < this.arrObject.length; i++) + { + if (this.arrObject[i].type == 'jumper') + this.#animationGravityChanger(this.arrObject[i].mesh) + } + } + }) + /*************************/ }; #createPlanes(x, y, rot, name, isBottom, visual) @@ -62,6 +82,7 @@ class Map if (this.arrObject[i].name == name) throw Error("Name already exist."); } + const geometry = new THREE.PlaneGeometry(x, y); let material = null; let mesh = null; @@ -82,7 +103,7 @@ class Map mesh.position.set(0, 0.15, 0); else mesh.position.set(0, 3.15, 0); - this.arrObject.push({mesh: mesh, name: name}); + this.arrObject.push({mesh: mesh, name: name, type: "plane"}); mesh.receiveShadow = true; return (mesh); }; @@ -101,7 +122,7 @@ class Map mesh.position.set(x, y, z); material.transparent = true; material.opacity = 0.5; - this.arrObject.push({mesh: mesh, name: name}); + this.arrObject.push({mesh: mesh, name: name, type: "wall"}); return (mesh); }; @@ -171,46 +192,91 @@ class Map group.rotateX(Math.PI); group.translateY(-6.3); } - this.arrObject.push({mesh: group, name: name}); + this.arrObject.push({mesh: group, name: name, type: 'jumper'}); this.scene.add(group); }; + #createWallObstacle(x, y, size, onTop) + { + const geometry = new THREE.BoxGeometry(size, 0.5, 0.1); + const material = new THREE.MeshPhysicalMaterial({color: 0xaaaafe}); + const mesh = new THREE.Mesh(geometry, material); + + + if (onTop) + mesh.position.set(x, this.playerLimits.up - 0.1, y); + else + mesh.position.set(x, 0.4, y); + return (mesh); + } + + #createBanner(radius, height) + { + return (null); + } + + #animationGravityChanger(group) + { + const geometry1 = new THREE.TorusGeometry(1.5, 0.05, 12, 24); + const material1 = new THREE.MeshPhysicalMaterial({color: 0x00ff00}); + const ring1 = new THREE.Mesh(geometry1, material1); + const landmark = group.children[0]; + let interval = null; + let speed = 0.1; + + ring1.rotateX(-Math.PI / 2); + ring1.position.set(landmark.position.x, landmark.position.y, landmark.position.z); + ring1.scale.set(0.2, 0.2, 0.2); + ring1.material.transparent = true; + this.scene.add(ring1); + + interval = setInterval(() => { + ring1.position.y += speed; + ring1.material.opacity -= 0.02; + speed *= 0.90; + if (ring1.material.opacity == 0) + clearInterval(interval); + }, 10); + } + #generateObstacle() { - let randomNumber; - if (Math.random() < 0.5) - { - randomNumber = Math.random(); - if (randomNumber < 0.5) - this.#createGravityChanger(-1.5, 0.2, this.mapLength / 4, "gravityChangerGroupBottom1", 0); - else - this.#createGravityChanger(1.5, 0.2, this.mapLength / 4, "gravityChangerGroupBottom2", 0); - } - if (Math.random() < 0.5) - { - randomNumber = Math.random(); - if (randomNumber < 0.5) - this.#createGravityChanger(-1.5, 0.2, -this.mapLength / 4, "gravityChangerGroupBottom3", 0); - else - this.#createGravityChanger(1.5, 0.2, -this.mapLength / 4, "gravityChangerGroupBottom4", 0); - } - if (Math.random() < 0.5) - { - randomNumber = Math.random(); - if (randomNumber < 0.5) - this.#createGravityChanger(-1.5, 3.2, this.mapLength / 4, "gravityChangerGroupTop1", 1); - else - this.#createGravityChanger(1.5, 3.2, this.mapLength / 4, "gravityChangerGroupTop2", 1); - } - if (Math.random() < 0.5) - { - randomNumber = Math.random(); - if (randomNumber < 0.5) - this.#createGravityChanger(-1.5, 3.2, -this.mapLength / 4, "gravityChangerGroupTop3", 1); - else - this.#createGravityChanger(1.5, 3.2, -this.mapLength / 4, "gravityChangerGroupTop4", 1); - } + this.#createGravityChanger(-1.5, 0.2, this.mapLength / 4, "gravityChangerGroupBottom1", 0); + + // let randomNumber; + // if (Math.random() < 0.5) + // { + // randomNumber = Math.random(); + // if (randomNumber < 0.5) + // this.#createGravityChanger(-1.5, 0.2, this.mapLength / 4, "gravityChangerGroupBottom1", 0); + // else + // this.#createGravityChanger(1.5, 0.2, this.mapLength / 4, "gravityChangerGroupBottom2", 0); + // } + // if (Math.random() < 0.5) + // { + // randomNumber = Math.random(); + // if (randomNumber < 0.5) + // this.#createGravityChanger(-1.5, 0.2, -this.mapLength / 4, "gravityChangerGroupBottom3", 0); + // else + // this.#createGravityChanger(1.5, 0.2, -this.mapLength / 4, "gravityChangerGroupBottom4", 0); + // } + // if (Math.random() < 0.5) + // { + // randomNumber = Math.random(); + // if (randomNumber < 0.5) + // this.#createGravityChanger(-1.5, 3.2, this.mapLength / 4, "gravityChangerGroupTop1", 1); + // else + // this.#createGravityChanger(1.5, 3.2, this.mapLength / 4, "gravityChangerGroupTop2", 1); + // } + // if (Math.random() < 0.5) + // { + // randomNumber = Math.random(); + // if (randomNumber < 0.5) + // this.#createGravityChanger(-1.5, 3.2, -this.mapLength / 4, "gravityChangerGroupTop3", 1); + // else + // this.#createGravityChanger(1.5, 3.2, -this.mapLength / 4, "gravityChangerGroupTop4", 1); + // } }; update(ball) @@ -219,19 +285,19 @@ class Map { if (this.arrObject[i].name == "wallLeft") { - if (ball.position.z < 0.1 && ball.position.z > -this.mapLength + 1) - this.arrObject[i].mesh.position.z = ball.position.z; - this.arrObject[i].mesh.position.y = ball.position.y; + if (ball.object.position.z < 0.1 && ball.object.position.z > -this.mapLength + 1) + this.arrObject[i].mesh.position.z = ball.object.position.z; + this.arrObject[i].mesh.position.y = ball.object.position.y; } if (this.arrObject[i].name == "wallRight") { - if (ball.position.z < 0.1 && ball.position.z > -this.mapLength + 1) - this.arrObject[i].mesh.position.z = ball.position.z; - this.arrObject[i].mesh.position.y = ball.position.y; + if (ball.object.position.z < 0.1 && ball.object.position.z > -this.mapLength + 1) + this.arrObject[i].mesh.position.z = ball.object.position.z; + this.arrObject[i].mesh.position.y = ball.object.position.y; } if (this.arrObject[i].name == "wallLeft") { - let diff = ball.position.x - this.arrObject[i].mesh.position.x - 0.1; + let diff = ball.object.position.x - this.arrObject[i].mesh.position.x - 0.1; if (diff > 2) this.arrObject[i].mesh.material.opacity = 0; @@ -240,13 +306,26 @@ class Map } if (this.arrObject[i].name == "wallRight") { - let diff = this.arrObject[i].mesh.position.x - ball.position.x - 0.1; + let diff = this.arrObject[i].mesh.position.x - ball.object.position.x - 0.1; if (diff > 2) this.arrObject[i].mesh.material.opacity = 0; else this.arrObject[i].mesh.material.opacity = 1 - (diff / 2); } + if (this.arrObject[i].type == 'jumper') + { + const cylinder = this.arrObject[i].mesh.children[5]; + const distance = ball.object.position.distanceTo(cylinder.position); + const speed = 0.1 + + if (distance < 0.25 && this.ballIsOnJumper.can) + { + this.ballIsOnJumper.can = false; + ball.changeGravity(this.ballIsOnJumper); + this.#animationGravityChanger(this.arrObject[i].mesh); + } + } if (this.arrObject[i].name == "gravityChangerGroupBottom1") { for (let j = 2; j < this.arrObject[i].mesh.children.length - 1; j++) diff --git a/site/real_game/class/Player.js b/site/real_game/class/Player.js index 20afd84..c70a170 100644 --- a/site/real_game/class/Player.js +++ b/site/real_game/class/Player.js @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* Player.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: hubourge +#+ +:+ +#+ */ +/* By: edbernar { playerExist = false; @@ -104,12 +104,12 @@ class Player this.setCameraPosition( this.object.position.x, this.object.position.y - (this.object.position.y >= this.limits.up ? 0.7 : -0.7), - this.object.position.z + 5 + this.object.position.z + 1.5 ); this.camera.rotation.set(0, 0, 0); } else - this.setCameraPosition(0, 1.5, 4); + this.setCameraPosition(0, 1.5, this.object.position.z + 3); } }); } diff --git a/site/real_game/main.js b/site/real_game/main.js index cacc3a4..d8a0c85 100644 --- a/site/real_game/main.js +++ b/site/real_game/main.js @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* main.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: hubourge +#+ +:+ +#+ */ +/* By: edbernar { diff --git a/site/real_game/node_modules/.vite/deps/_metadata.json b/site/real_game/node_modules/.vite/deps/_metadata.json index ccd4dee..8f764dd 100644 --- a/site/real_game/node_modules/.vite/deps/_metadata.json +++ b/site/real_game/node_modules/.vite/deps/_metadata.json @@ -1,25 +1,25 @@ { - "hash": "fba7eca6", - "configHash": "345fb419", + "hash": "aeb97021", + "configHash": "0b4c6e74", "lockfileHash": "cd36b699", - "browserHash": "e2576fb7", + "browserHash": "7877d18e", "optimized": { "three": { "src": "../../three/build/three.module.js", "file": "three.js", - "fileHash": "692a1237", + "fileHash": "25132e42", "needsInterop": false }, "three/examples/jsm/Addons.js": { "src": "../../three/examples/jsm/Addons.js", "file": "three_examples_jsm_Addons__js.js", - "fileHash": "f47f44f4", + "fileHash": "99fa9e6e", "needsInterop": false }, "three/addons/loaders/GLTFLoader.js": { "src": "../../three/examples/jsm/loaders/GLTFLoader.js", "file": "three_addons_loaders_GLTFLoader__js.js", - "fileHash": "23466596", + "fileHash": "1e0e6771", "needsInterop": false } },