Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jMonkey中沿自己的轴旋转多个节点_Java_Rotation_Jmonkeyengine - Fatal编程技术网

Java 如何在jMonkey中沿自己的轴旋转多个节点

Java 如何在jMonkey中沿自己的轴旋转多个节点,java,rotation,jmonkeyengine,Java,Rotation,Jmonkeyengine,我试图让两个圆柱体在它们自己的Y轴上旋转,但每次它们都绕着根节点轴旋转。有没有办法让它们绕着自己的轴旋转?在谷歌上找不到明确的答案 Cylinder 1和Cylinder 2是已创建的节点 我还尝试将两个圆柱体连接到rootNode并使用rootNode.rotate() 修复了这个问题,我必须将cylinderCreate中SetLocalTranslation中的f更改为0, 并添加n.move(fl,0,0);要在返回n之前创建Cylinder,请给出一些用于执行旋转的代码。我还没有测试过

我试图让两个圆柱体在它们自己的Y轴上旋转,但每次它们都绕着根节点轴旋转。有没有办法让它们绕着自己的轴旋转?在谷歌上找不到明确的答案

Cylinder 1和Cylinder 2是已创建的节点
我还尝试将两个圆柱体连接到rootNode并使用rootNode.rotate()

修复了这个问题,我必须将cylinderCreate中SetLocalTranslation中的f更改为0,

并添加n.move(fl,0,0);要在返回n之前创建Cylinder,请给出一些用于执行旋转的代码。我还没有测试过,但您是否尝试过使用setLocalRotation?此外,如果要导入混合器文件,则在导入之前确保圆柱体在混合器内居中。如果在根节点和对象之间放置多个节点,通常会更容易考虑。我经常喜欢做rootnode--translationNode--localRotationNode--translationfromlocentrenode(可选)--对象。这样一来,首先发生的事情就显而易见了
public class Main extends SimpleApplication {
Node cylinder1;
Node cylinder2;

public static void main(String[] args) {
    Main app = new Main();
    app.start();
}

@Override
public void simpleInitApp() {
    cylinder1 = new Node();
    cylinder2 = new Node();

    cylinder1 = cylinderCreate(-3, fles1, false);
    cylinder2 = cylinderCreate(3, fles2, true);

    rootNode.attachChild(cylinder1);
    rootNode.attachChild(cylinder2);
}

public Node cylinderCreate(float f, Node n, boolean b)
{

    Cylinder cyl = new Cylinder(32, 32, 1.0f, 4, true);    // closed body 

        Geometry geomcyl = new Geometry("Cylinder", cyl);
        Material matcyl = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        geomcyl.setLocalTranslation(f, 0f, 0f);
        matcyl.setTexture("ColorMap", assetManager.loadTexture("Interface/sdfg.jpg"));
        geomcyl.setMaterial(matcyl);

        float pi = FastMath.HALF_PI;
        geomcyl.rotate(pi*3, 0, 0);
        n.attachChild(geomcyl);

    return n;
}


@Override
public void simpleUpdate(float tpf) {
    //TODO: add update code
    cylinder1.rotate(0, 2*tpf, 0);
    cylinder2.rotate(0, 2*tpf, 0);
}