2015-07-31 6 views
3

Я создаю простую автомобильную игру с cannon.js, и я борюсь с этим.cannon.js регистрация столкновения без столкновения

Что я хочу сделать:

Когда я бегу с автомобиля в другой объект (например сферу), я хочу знать об этом.

Например, увеличивайте счет или что-то еще, но без применения сил для обоих объектов.

То, что я пытался безуспешно:

Использования

chassisBody.addEventListener("collide",function(e){ "mycode"}; 

комбинированных группами

var GROUP1 = 1; etc.. 

но точки групп я думаю, знак, какой объект я хочу, и не хочу чтобы столкнуться, и я хочу, чтобы они «столкнулись», но фактически не применяли к ним силы, только регистрируя, что их тела пересекались и стреляли в мои скоринг код и т.д.

(я добавил threejs тег только в случае, если кто-то, возможно, наткнулся на это, и я использую его в любом случае)

+0

может создать пример на jsfiddle.net? – lukbl

+0

Посмотрите на настоящую игру, wsad-movement, 1/2 или O/P-change между камерами, сфера находится в другой группе, и я хочу это не сталкивающееся поведение, но запишите что-то, когда «столкнулись = (когда их тела пересекаются)» , http://cerven.net/bootcamp/test.html Используйте хром или firefox, пожалуйста. – martinerk0

ответ

4

Следующий код взят из this примера. Я тестировал ваш ответ на прослушиватель событий, и он работал нормально.

Набор collisionResponse твердого тела в 0:

b2.collisionResponse = 0; // no impact on other bodys 
b2.addEventListener("collide", function(e){ console.log("sphere collided"); }); 
+0

Да, но когда вы ставите автомобиль и сферу в разные группы, они не будут сталкиваться, но вы ** не будете уведомлены о пересечении сетки. И я хочу, чтобы они физически не сталкивались, но должны быть уведомлены, когда они ** пересекаются **. Я думаю, что мой вопрос таков: https://github.com/schteppe/cannon.js/issues/188, и за последний час я пытаюсь его реализовать, но безуспешно. (поместите дополнительную кинематическую коробку вокруг автомобиля, создайте кинематическую коробку на земле и получите уведомление, когда они столкнутся). Или я совсем чего-то не хватает? – martinerk0

+0

В идеале я хотел бы иметь обратный вызов: 'Body.addEventListener (« intersect », function (e) {console.log (« они пересекаются! »);}' – martinerk0

+0

Я протестировал ваш конкретный случай и не получил обратного вызова. В ammo.js это решается установкой флага столкновения «no_contact_response» или с помощью так называемых «призрачных боди» в качестве триггеров. Но schteppe также читает вопросы Stackoverflow, поэтому, в конце концов, они будут отвечать;) –