【问题标题】:unity3d - help needed to rotate a cube diagonallyunity3d - 对角旋转立方体所需的帮助
【发布时间】:2014-01-07 19:55:39
【问题描述】:

我正在学习使用 Unity3d,我想对角旋转一个立方体,这样当我按左箭头键 + q 或右箭头键 + w 时,它似乎在对角旋转。谁能帮我查询一下?

这是我目前拥有的:

void Update () 
{
   if(Input.GetKey(KeyCode.UpArrow)) //move forward
      transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

   if(Input.GetKey(KeyCode.DownArrow)) //move backward
      transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);

   if(Input.GetKey(KeyCode.LeftArrow)) //turn left
      transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

   if(Input.GetKey(KeyCode.RightArrow)) //turn right
      transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
}

【问题讨论】:

  • 你的意思是对角线,如在 2 个不同的轴上?
  • 您的意思是您所做的transform.Rotate 工作不正常吗?还是别的什么?
  • 如果我同时按下左箭头键和 q 键,我希望立方体向左上角旋转。我已经尝试过旋转功能:transform.Rotate(rotateAmount ===>这是一个公共 vec3 变量 * Time.deltaTime),但是同时按下两个键时这似乎不起作用。

标签: unity3d


【解决方案1】:

试试这样的:

if(Input.GetKey(KeyCode.Q)) { //turn diagonally to the left
transform.Rotate(new Vector3 (moveSpeed * Time.deltaTime, 0f, moveSpeed * Time.deltaTime));
}
if(Input.GetKey(KeyCode.E)) { //turn diagonally to the right
transform.Rotate(new Vector3 (moveSpeed * Time.deltaTime, 0f, -moveSpeed * Time.deltaTime));
}

如果它旋转到错误的方向,请将 -moveSpeed 替换为 moveSpeed 并将 moveSpeed 替换为 -moveSpeed,我希望这可行(未经测试)

【讨论】:

  • 接受答案,如果它有效,如果它没有告诉我发生了什么
  • 我不得不按照你的建议反转 movespeed 变量 - 现在可以正常工作
  • 很高兴为您提供帮助,我知道我在代码中犯了一个错误,但修复起来很简单,反正我已经编辑过了
  • 哦,我现在才注意到你想在按下左键和 q 时旋转它,而不仅仅是 q,所以将 if 语句更改为 if(Input.GetKey(KeyCode.LeftArrow) && Input.GetKey (KeyCode.Q)),但你可能已经知道了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多