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;