使用 Vector3 翻译对象
Translation of an object using Vector3
我对 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 轴上应用一定的运动,当我关上门时我将它们递减相同的值。
我希望我已经清楚地解释了问题,如果没有请告诉我。
尝试更改 ClosingDoor 函数中 transform.Rotate 和 transform.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.Rotate (rotate);
transform.Translate (movement);
toClose = false;
}
我对 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 轴上应用一定的运动,当我关上门时我将它们递减相同的值。
我希望我已经清楚地解释了问题,如果没有请告诉我。
尝试更改 ClosingDoor 函数中 transform.Rotate 和 transform.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.Rotate (rotate);
transform.Translate (movement);
toClose = false;
}