我有两个物体基地和武器,我需要将武器的旋转点设置到基地的位置。
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));
}
感谢您的回答
答案 0 :(得分:6)
围绕一个点的旋转与平移到该点,旋转然后平移回来相同 所以这个过程包括3个步骤:
rotationPoint
,例如translate(3, 0, 0)
rotationPoint
),例如rotate(0,1,0, 45*delta)
translate(-3, 0, 0);
在这种情况下,代码如下所示:
weapon.transform.translate(3, 0, 0).rotate(0,1,0, 45*delta).translate(-3, 0, 0);