hi all i added a box to rootnode
and i used collision to know if my pointer touch the box but i have collision outside my box :
[java]
Box box = new Box(new Vector3f(0, -3, 0), 6f, 1f, 1f);
Geometry back = new Geometry(“galaxy”, box);
back.setMaterial(material);
[/java]
and for collision
[java] Vector3f origin = getCamera().getWorldCoordinates(
getInputManager().getCursorPosition(), 0.0f);
Vector3f direction = getCamera().getWorldCoordinates(
getInputManager().getCursorPosition(), 0.3f);
direction.subtractLocal(origin).normalizeLocal();
Ray ray = new Ray(origin, direction);
CollisionResults results = new CollisionResults();
int collisionSphere = box.collideWith(ray, results);
if (collisionSphere > 0) {
System.out.println(‘Box touched’);
}
[/java]
so with that code i ve got ‘Box touched’ outside the box.Where 's my error?
You dont check the collision results
if i do [java] results.getClosestCollision().getGeometry().getName()[/java] this is not the box i touch with the pointer but another one
something wrong …
with sphere it works.With box it does not
my target is to know if the mouse pointer collide with a box.
Could u believe that with that code it does not work?!
[java]results.getClosestCollision().getGeometry().getName()[/java] return me not the box name i touch.The region where i get ‘Box touched’ is completelly wrong .Another zone
Have you got a sky box?
Sometimes collision result is messed up because the sky box is in the way but you can’t see it.
If you got one, do that sky.setLocalScale(1000); in your simpleInit and test again.
@nehon that cant happen because he has : box.collideWith
if he had rootNode.collideWith it may be a problem.
@dilembo i am using the same code in my game and it works ( i tried with a quad). The only difference i have is :
[java]
scene.getCollidables().collideWith(ray, results);
if (results.size() > 0)
{
}
{[/java]
I am 99% sure that the error is because you use the crappy jme’s box constructor. Try this :
[java]
/**Lower left corner is at (0,0,0) and top right corner is at (x,y,z)*/
public static Box createLowerLeftBox(float x, float y, float z)
{
return new Box(new Vector3f(x / 2f, y / 2f, z / 2f), x / 2f, y / 2f, z / 2f);
}
[/java]
Exists a craapy jme’s box constructor?
Actually it is a box in a android phone screen could be that the reason?
I have collision to the box not when i touch the box.Quite strange.I ll post this to android jme3 forum
i tried to create a jme3 app and it works resizing properly the box.It’s a problem for android forum thanks anyway