如何根据方向移动三维模型

时间:2014-12-19 11:47:50

标签: java android opengl-es libgdx

我是libgdx的新手和一般的android编程......所以我试图用libgdx制作游戏,用户使用加速度计来移动模型....但我似乎不能弄清楚如何正确地移动模型面对它...我在这个链接上使用了类似排队的两个代码...... Android. How to move object in the direction it is facing (using Vector3 and Quaternion) .....但它不能正常工作.. ..我猜它与更新cos有关,答案是旧的......感谢任何帮助

这是我试过的代码

public Vector3 baseDirection;
public Vector3 position;
public Quaternion rotation;
public Vector3 translation;
...
public void show
{
baseDirection=new Vector3(0,0,1).nor();
.....
}
public void render
{
direction.mul(rotation);
translation.set(direction);
translation.scl(speed*delta);
instance.transform.translate(translation.x/100f,tranlation.y/100f,translation.z/100f);
}

然后我尝试了这个

public void render
{
direction.rot(instance.transform).nor().scl(speed*delta);
position.add(direction);
}

将第一个代码移动到它的方向,但是当我把它转到初始点时,就好像所有的代码都颠倒过来一样 ......然后用第二个代码完美地向前移动但是如果我稍微向侧面转动它会完全向侧面移动

1 个答案:

答案 0 :(得分:0)

我看到了我的问题......第二个代码工作得更好....我不需要将转换向量添加到位置向量所有我需要做的是通过翻译向量翻译实例

translation.set(direction).rot(instance.transform).nor().scl(speed*delta);
instance.transform.translate(translation);

完美无缺