我的Translate
功能有问题。我要做的是点击它们打开门。我成功地用所有的门做了这个,但现在我添加了一个新的,当我关闭它时,它不会回到它的位置。
我会尝试更好地解释问题,显示代码:
public override void OpeningDoor() {
Vector3 movement = new Vector3 (2.006f, 0.0f,1.793f);
Vector3 rotate = new Vector3 (0.0f, 108.3f, 0.0f);
transform.Translate (movement);
transform.Rotate (rotate);
toClose = true;
}
public override void ClosingDoor() {
Debug.Log ("Closing Door");
Vector3 movement = new Vector3 (-2.006f, 0.0f,-1.793f);
Vector3 rotate = new Vector3 (0.0f, -108.3f, 0.0f);
transform.Translate (movement);
transform.Rotate (rotate);
toClose = false;
}
轮换没问题,没问题。当我打开门时,它会进入 正确的位置,但当我关闭它时,它不会回到它的位置,它会转换为错误的位置。从理论上讲,我只是在X轴和Z轴上应用了一定的运动,当我关闭门时,我将它们减去相同的值。
我希望我已经清楚地解释了这个问题,如果没有,请告诉我。
答案 0 :(得分:1)
尝试更改transform.Rotate和transform.Translate ClosingDoor函数中的行的顺序。
因为平移是相对于门的方向,所以在旋转之前将其平移会将其移动到错误的位置。
public override void OpeningDoor() {
Vector3 movement = new Vector3 (2.006f, 0.0f,1.793f);
Vector3 rotate = new Vector3 (0.0f, 108.3f, 0.0f);
transform.Translate (movement);
transform.Rotate (rotate);
toClose = true;
}
public override void ClosingDoor() {
Debug.Log ("Closing Door");
Vector3 movement = new Vector3 (-2.006f, 0.0f,-1.793f);
Vector3 rotate = new Vector3 (0.0f, -108.3f, 0.0f);
transform.Rotate (rotate);
transform.Translate (movement);
toClose = false;
}