[javascript] Three.js를 사용하여 웹에서의 3D 퍼즐 게임 개발

Three.js는 JavaScript로 작성된 웹 기반의 3D 그래픽 라이브러리입니다. 이 라이브러리를 사용하면 웹 브라우저 상에서 다양한 종류의 3D 효과를 구현할 수 있습니다. 이번 블로그 포스트에서는 Three.js를 사용하여 웹에서 3D 퍼즐 게임을 개발하는 방법에 대해 알아보겠습니다.

1. Three.js 설치 및 설정

Three.js를 사용하기 위해서는 먼저 Three.js 라이브러리를 다운로드하고 HTML 파일에 추가해야 합니다. 아래의 코드로 Three.js를 다운로드 받을 수 있습니다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>

다음으로는 HTML 파일에 Three.js를 초기화하고 3D 씬을 생성하는 코드를 추가해야 합니다. 아래의 코드를 참고하여 초기화 코드를 작성해보세요.

// 캔버스 요소 생성
const canvas = document.getElementById("canvas");

// Three.js 초기화
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, canvas.clientWidth / canvas.clientHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ canvas });

// 배경색 설정
renderer.setClearColor(0x000000);

// 카메라 위치 설정
camera.position.set(0, 0, 5);

// 렌더러 크기 설정
renderer.setSize(canvas.clientWidth, canvas.clientHeight);

2. 3D 퍼즐 요소 생성

다음으로는 3D 퍼즐을 구성하는 요소를 생성해야 합니다. 예를 들어, 큐브나 구 같은 기본적인 도형을 생성하여 퍼즐의 조각으로 사용할 수 있습니다. 아래의 코드로 큐브를 생성하는 예제를 확인해보세요.

// 큐브 생성
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1);
const cubeMaterial = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial);

// 큐브 추가
scene.add(cube);

위의 코드에서는 크기가 1x1x1인 큐브를 생성하고 초록색으로 색칠한 뒤, 3D 씬에 추가하고 있습니다.

3. 게임 로직 구현

3D 퍼즐 게임에는 다양한 게임 로직이 포함될 수 있습니다. 예를 들어, 퍼즐 조각을 드래그하여 위치를 변경하거나, 조각들을 회전시키는 등의 동작을 구현할 수 있습니다. 이러한 동작은 마우스 이벤트 처리와 애니메이션 기능을 활용하여 구현할 수 있습니다.

// 마우스 이벤트 처리
const mouse = new THREE.Vector2();
document.addEventListener("mousemove", (event) => {
  mouse.x = (event.clientX / canvas.clientWidth) * 2 - 1;
  mouse.y = -(event.clientY / canvas.clientHeight) * 2 + 1;
});

// 애니메이션
function animate() {
  requestAnimationFrame(animate);

  // 조각들을 드래그 및 회전시키는 로직 구현

  renderer.render(scene, camera);
}
animate();

위의 코드에서는 마우스의 움직임을 이벤트로 처리하고, 애니메이션 기능을 활용하여 조각들을 드래그 및 회전시키는 로직을 구현하고 있습니다.

4. 게임 UI 디자인 및 기타 기능 추가

마지막으로는 게임의 UI 디자인 및 기타 기능을 추가할 수 있습니다. 예를 들어, 게임 시작 버튼이나 스코어 표시 등을 구현할 수 있습니다. 이러한 UI 요소들은 HTML과 CSS를 활용하여 만들 수 있으며, JavaScript와 Three.js를 사용하여 원하는 동작을 구현할 수 있습니다.

<!-- HTML -->
<button id="start-button">Start Game</button>
<div id="score"></div>
// JavaScript
const startButton = document.getElementById("start-button");
const scoreElement = document.getElementById("score");

startButton.addEventListener("click", () => {
  // 게임 시작 로직
});

function updateScore(score) {
  scoreElement.textContent = `Score: ${score}`;
}

위의 코드에서는 게임 시작 버튼을 클릭하면 게임이 시작되도록 구현하고, 스코어를 업데이트하는 기능을 추가하고 있습니다.

마치며

이번 포스트에서는 Three.js를 사용하여 웹에서 3D 퍼즐 게임을 개발하는 방법에 대해 알아보았습니다. Three.js를 활용하면 쉽게 웹 기반의 3D 그래픽을 구현할 수 있으며, 다양한 게임 로직과 UI를 추가하여 풍부한 게임 경험을 제공할 수 있습니다. 참고 자료를 통해 더 자세한 내용을 학습하시기 바랍니다.

참고 자료