This may sound like a newbish question however i am having issues translating this properly. The problem apparently was always their however, because i took other measures to prevent the initial problem it didnt show up until now. How do I translate a model so that its new translation is directly above another node. Their are 2 nodes a model which is attached to modelNode and a platform which is attached to the sceneNode. Both the model and the scene nodes are attached to the rootNode. It should not be that difficult but no matter if i translate it the intended way or not ie worldtranslation.set etc i still receive odd results can anyone advice a solution?
The part of the update that i am having issues with
//This is for Y
if(model.getNegYSide()==pBounds.getCenter().getY()+pBounds.getYExtent()){
y=0;
model.setOnPlatform(true);
} else if (model.getNegYSide() < pBounds.getCenter().getY() + pBounds.getYExtent()
&&model.getPosYSide()-model.getHeight()/5>pBounds.getCenter().getY() + pBounds.getYExtent()) {
float distance = (pBounds.getCenter().getY()+pBounds.getYExtent())+mBounds.getYExtent();
mBounds.getCenter().setY(distance);
y=0;
model.setOnPlatform(true);
}
fullCode update
public void update(float tpf) {
for(CollisionNode model : models){
model.update(tpf);
BoundingBox mBounds = (BoundingBox)model.getWorldBound();
float x = 0;
float y =-1;
float z = 0;
for(Spatial platform : platforms.getChildren()){
BoundingBox pBounds = (BoundingBox)platform.getWorldBound();
if(pBounds.intersects(mBounds)){
//This is for Y
if(model.getNegYSide()==pBounds.getCenter().getY()+pBounds.getYExtent()){
y=0;
model.setOnPlatform(true);
} else if (model.getNegYSide() < pBounds.getCenter().getY() + pBounds.getYExtent()
&&model.getPosYSide()-model.getHeight()/5>pBounds.getCenter().getY() + pBounds.getYExtent()) {
float distance = (pBounds.getCenter().getY()+pBounds.getYExtent())+mBounds.getYExtent();
mBounds.getCenter().setY(distance);
y=0;
model.setOnPlatform(true);
}
//This is to check if the player can Hop onto the top of the platform or be blocked by it
if(model.getPosYSide()-model.getHeight()/5<=pBounds.getCenter().getY()+pBounds.getYExtent()){
//This is for X
if(model.getNegXSide()==pBounds.getCenter().getX() + pBounds.getXExtent()
||model.getPosXSide() == pBounds.getCenter().getX() - pBounds.getXExtent()){
x=0;
}else if (model.getNegXSide() < pBounds.getCenter().getX() + pBounds.getXExtent()
&&model.getPosXSide()>pBounds.getCenter().getX() + pBounds.getXExtent()) {
float distance = (pBounds.getCenter().getX()+pBounds.getXExtent())+mBounds.getXExtent();
model.getLocalTranslation().setX(distance);
x=0;
} else if(model.getPosXSide() > pBounds.getCenter().getX() - pBounds.getXExtent()
&&model.getNegXSide()<pBounds.getCenter().getX() - pBounds.getXExtent()){
float distance = (pBounds.getCenter().getX()-pBounds.getXExtent())-mBounds.getXExtent();
model.getLocalTranslation().setX(distance);
x=0;
}
//This is for Z
if(model.getNegZSide()==pBounds.getCenter().getZ() + pBounds.getZExtent()
||model.getPosZSide() == pBounds.getCenter().getZ() - pBounds.getZExtent()){
z=0;
}else if (model.getNegZSide() < pBounds.getCenter().getZ() + pBounds.getZExtent()
&&model.getPosZSide()>pBounds.getCenter().getZ() + pBounds.getZExtent()) {
float distance = (pBounds.getCenter().getZ()+pBounds.getZExtent())+mBounds.getZExtent();
model.getLocalTranslation().setZ(distance);
z=0;
} else if(model.getPosZSide() > pBounds.getCenter().getZ() - pBounds.getZExtent()
&&model.getNegZSide()<pBounds.getCenter().getZ() - pBounds.getZExtent()){
float distance = (pBounds.getCenter().getZ()-pBounds.getZExtent())-mBounds.getZExtent();
model.getLocalTranslation().setZ(distance);
z=0;
}
}
}
}
model.force(x, y, z);
}
}