2015-01-29 6 views
0

나는 간단한 fps를 만들기 위해 Physijs와 협력 중이다. Physijs가 없으면 Player 객체를 만들고 아래 코드를 사용하여 THREE.Mesh 클래스를 확장합니다.Physijs.Mesh 확장하기

function Player() { 
    THREE.Mesh.apply(this, arguments); 
    ... 
} 
Player.prototype = Object.create(THREE.Mesh.prototype); 

그럼 Player를 인스턴스화하고 카메라를 추가하여 1 인칭 시력을 얻습니다. 그러나 플레이어를위한 모든 충돌 감지를 프로그래밍해야하므로 바닥을 통과하지 않습니다. 바닥에 new Physijs.BoxMesh을 사용할 수는 있지만 플레이어는 어떻습니까? Physijs를 사용하여 피직스가 적용된 '플레이어'클래스를 어떻게 만듭니 까? 나는 ... Physijs.Mesh.apply(...) ... 및 Object.create(Physijs.Mesh.prototype)과 같은 것을 시도했지만 작동하지 않습니다.

의견을 보내 주셔서 감사합니다.

답변

0

메시 간의 충돌 감지를 수행하려면 모든 메시를 phys.js에 알려야합니다. 즉, 당신은 physi.js 모양 중 하나를 사용해야합니다.

플레이어를위한 physi.js 메시가 필요하므로 바닥을 통과하지 않아야합니다. 이것은 사용자가 볼 수있는 메시와 같을 필요는 없습니다. 플레이어를 따라가는 보이지 않는 메쉬를 가질 수 있으며 아마도 더 간단한 지오메트리를 가질 수 있습니다.

Physi.js 메시에 하나 이상의 기본 모양 (상자, 평면, 구 등)이 필요하면 복합 모양을 만들어야합니다.

+0

응답 해 주셔서 감사합니다. Bob! 그것은 약간의 혼란을 해결합니다. 당신이 후속 질문을하는 걸 꺼려한다면 ... 어떻게 Player 객체에 카메라를 추가할까요? 메쉬에 추가할까요? Player.js 'function Player() { this.bodyMesh = new Physijs.BoxMesh (...); ... } Player.prototype.constructor = Player; ' 그럼 main.js에서 플레이어를 인스턴스화합니다 ... 'player = new Player(); player.bodyMesh.add (camera); scene.add (player.bodyMesh); ' – snowcap420

+0

이것은 별도의 질문으로 게시해야합니다. 그리고 나는 그것을 완전히 이해하지 못합니다. 왜 카메라를 장면이 아닌 플레이어에 추가하겠습니까? 카메라가 플레이어를 따라 오길 원합니까? 그렇게하는 방법에 대한 몇 가지 게시물이 있습니다. –