This is my code and I am getting a blank black page as output. The console has no errors,browser also support everything and I imported everything too.
I expected a 3D car game as a output but I got a blank page. I tried solving the problem but was unable to do.
// Initialize Three.js and Cannon.js
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var Cannon = new CANNON.World();
Cannon.gravity.set(0, 0, -9.82);
// Create the track
var geometry = new THREE.PlaneGeometry(200, 200);
var material = new THREE.MeshBasicMaterial({
color: "white",
side: THREE.DoubleSide
});
var track = new THREE.Mesh(geometry, material);
scene.add(track);
// Create the car
var carGeometry = new THREE.BoxGeometry(1, 1, 2);
var carMaterial = new THREE.MeshBasicMaterial({
color: "Red"
});
var car = new THREE.Mesh(carGeometry, carMaterial);
car.position.z = 5;
scene.add(car);
// Add physics to the car
var carPhysics = new CANNON.Body({
mass: 5,
position: new CANNON.Vec3(0, 0, 5),
shape: new CANNON.Box(new CANNON.Vec3(1, 1, 2)),
});
Cannon.add(carPhysics);
// Add controls to the car
var speed = 0;
document.addEventListener("keydown", function(event) {
if (event.code == "ArrowUp") {
speed += 0.1;
}
if (event.code == "ArrowDown") {
speed -= 0.1;
}
if (event.code == "ArrowLeft") {
car.rotation.z += 0.1;
}
if (event.code == "ArrowRight") {
car.rotation.z -= 0.1;
}
});
// Animate the scene
function animate() {
requestAnimationFrame(animate);
// Update the car position and physics
car.position.z += speed;
carPhysics.position.z = car.position.z;
Cannon.step(1 / 60);
renderer.render(scene, camera);
}
animate();
body {
margin: 0;
}
canvas {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/cannon.js/0.6.2/cannon.min.js"></script>