未验证 提交 63f7f8b0 编写于 作者: P Paul Masson 提交者: GitHub

Add collision handling

上级 ef11a162
......@@ -42,6 +42,10 @@
var controller;
var room;
var radius = 0.08;
var normal = new THREE.Vector3();
var relativeVelocity = new THREE.Vector3();
init();
animate();
......@@ -77,7 +81,7 @@
light.position.set( 1, 1, 1 ).normalize();
scene.add( light );
var geometry = new THREE.IcosahedronBufferGeometry( 0.08, 2 );
var geometry = new THREE.IcosahedronBufferGeometry( radius, 2 );
for ( var i = 0; i < 200; i ++ ) {
......@@ -187,7 +191,7 @@
// keep cubes inside room
var range = 3 - 0.08;
var range = 3 - radius;
for ( var i = 0; i < room.children.length; i ++ ) {
......@@ -218,6 +222,28 @@
cube.userData.velocity.z = - cube.userData.velocity.z;
}
for ( var j = i + 1; j < room.children.length; j ++ ) {
var cube2 = room.children[ j ];
normal.copy( cube.position ).sub( cube2.position );
if ( normal.length() < 2 * radius ) {
normal.normalize();
relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
var dot = relativeVelocity.dot( normal );
normal = normal.multiplyScalar( dot );
cube.userData.velocity.sub( normal );
cube2.userData.velocity.add( normal );
}
}
cube.userData.velocity.y -= 0.00098;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册