libGDX设置旋转点3D

时间:2014-10-30 14:57:18

标签: java 3d libgdx

我有两个物体基地和武器,我需要将武器的旋转点设置到基地的位置。

public Test(){
position1 = new Vector3(0,0,0);
baseModel = modelLoader.loadModel(Gdx.files.getFileHandle("data/models/tower/bases/base1.g3db", FileType.Internal));
        base = new Base(baseModel, position1);

        position2 = new Vector3(3,10,5);

        weaponModel = modelLoader.loadModel(Gdx.files.getFileHandle("data/models/tower/weapons/weapon2.g3db", FileType.Internal));
        weapon = new Weapon(weaponModel, position2);
}

这是更新方法

public void update(float delta){

        weapon.transform.rotate(0, 1, 0, 45*(delta/2));
        base.transform.rotate(0, 1, 0, 45*(delta/2));
}

a busy cat

感谢您的回答

1 个答案:

答案 0 :(得分:6)

围绕一个点的旋转与平移到该点,旋转然后平移回来相同 所以这个过程包括3个步骤:

  1. 转换为rotationPoint,例如translate(3, 0, 0)
  2. 围绕中心旋转(现在是rotationPoint),例如rotate(0,1,0, 45*delta)
  3. 翻译(翻译相对于轮换),例如translate(-3, 0, 0);
  4. 在这种情况下,代码如下所示:

    weapon.transform.translate(3, 0, 0).rotate(0,1,0, 45*delta).translate(-3, 0, 0);