Mini Fortnite 3JS Game - Use WASD to move, mouse to look
// Basic Three.js setup for your Fortnite-style game let scene, camera, renderer; let player; let bots = []; function init() { scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // Add a simple ground const geometry = new THREE.PlaneGeometry(200, 200); const material = new THREE.MeshBasicMaterial({ color: 0x228B22, side: THREE.DoubleSide }); const ground = new THREE.Mesh(geometry, material); ground.rotation.x = -Math.PI / 2; scene.add(ground); // Player: a simple cube const playerGeometry = new THREE.BoxGeometry(1, 2, 1); const playerMaterial = new THREE.MeshBasicMaterial({ color: 0x0000ff }); player = new THREE.Mesh(playerGeometry, playerMaterial); player.position.y = 1; scene.add(player); // Place camera above and behind the player camera.position.set(0, 5, 10); camera.lookAt(player.position); // Create bots (simplified as red cubes) let botGeometry = new THREE.BoxGeometry(1, 2, 1); let botMaterial = new THREE.MeshBasicMaterial({ color: 0xff0000 }); let bot = new THREE.Mesh(botGeometry, botMaterial); bot.position.set( (Math.random() - 0.5) * 100, 1, (Math.random() - 0.5) * 100 ); scene.add(bot); bots.push(bot); } window.addEventListener('resize', onWindowResize, false); document.addEventListener('keydown', onKeyDown, false); document.addEventListener('keyup', onKeyUp, false); animate(); } function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); } // Simple player movement flags let moveForward = false; let moveBackward = false; let moveLeft = false; let moveRight = false; function onKeyDown(event) { switch (event.code) { case 'KeyW': moveForward = true; break; case 'KeyS': moveBackward = true; break; case 'KeyA': moveLeft = true; break; case 'KeyD': moveRight = true; break; } } function onKeyUp(event) { switch (event.code) { case 'KeyW': moveForward = false; break; case 'KeyS': moveBackward = false; break; case 'KeyA': moveLeft = false; break; case 'KeyD': moveRight = false; break; } } function animate() { requestAnimationFrame(animate); const speed = 0.1; if (moveForward) player.position.z -= speed; if (moveBackward) player.position.z += speed; if (moveLeft) player.position.x -= speed; if (moveRight) player.position.x += speed; // Keep camera following the player from behind and above camera.position.x = player.position.x; camera.position.z = player.position.z + 10; camera.position.y = player.position.y + 5; camera.lookAt(player.position); renderer.render(scene, camera); } window.onload = init;