ACCNCC
@ACCNCC
Делаю игры!

Как в Three.js сделать нормальный hittest?

Я сделал хиттест но он работает через раз! не могу понять по чему..
Код:
var shipSphere=DEMO.Hero_Array[2].object;
					var collidableMeshList=DEMO.attack_ball;
					
					var originPoint = shipSphere.position.clone();
					
					for (var vertexIndex = 0; vertexIndex < shipSphere.geometry.vertices.length; vertexIndex++)
					{
						var localVertex = shipSphere.geometry.vertices[vertexIndex].clone();
						var globalVertex = localVertex.applyMatrix4(shipSphere.matrix);
						var directionVector = globalVertex.sub(shipSphere.position);

						var ray = new THREE.Raycaster(originPoint, directionVector.clone().normalize());
						
						var collisionResults = ray.intersectObjects(collidableMeshList);
						
						if (collisionResults.length > 0 && collisionResults[0].distance < directionVector.length() + 20)
						{
							//console.log('attack_ball');
							
							DEMO.ms_Scene.remove( DEMO.attack_ball[key] ); // Удалим объект со сцены
							
							if (DEMO.attack_ball[key] != undefined){

								
								UBUTUBU.ThreeJS.Explosion.Add(DEMO.attack_ball[key].position.x + 10 , DEMO.attack_ball[key].position.z , DEMO.attack_ball[key].position.y);
								
								
								DEMO.attack_ball[key].delete; 
								DEMO.attack_ball.splice(key,1);
							}
						}
					}


Может есть другие варианты?
  • Вопрос задан
  • 235 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы