首页 > 解决方案 > 如何通过重复按一个键将 Unity3D 中的对象从一个位置移动到另一个位置并按设定的顺序进一步移动?

问题描述

有没有办法通过按键将Unity3d中的对象从一个地方(target1)移动到另一个地方(target2 ..等等)?

我用了...

private void FixedUpdate()
{

    if (Input.GetKey("s"))
    {
        transform.position = target1.position;

    }
}

...将对象形式 Start 移动到第一个目标,但如果只是编写另一个 if 语句,则对象将直接转到目标 2... :(

我想要:对象从 target1 移动到 target2 到 target3 等等,按“s”

我希望有一个人可以帮助我 :)

标签: c#visual-studiounity3d

解决方案


我的理解是,您要么希望对象有一系列可移动的位置,要么希望每次按下按钮时对象移动一定量。我将为每一个给出一个例子和一个解释。

  1. 您想将一个对象移动到不同的点,而不是每次都移动一个特定的量。首先,您可以使用一个数组,并按顺序填充对象要移动的位置。然后,您可以有一个公共变量,用于在每次按下按钮时循环遍历数组。现在,Input.GetKey("s")您需要的是 ,而不是有几个问题的Input.GetKeyDown(KeyCode.S),因为 GetKeyDown 仅在您按下键时触发,而 GetKey 会在按下键的每一帧触发。您还需要 KeyCode,因为这就是 KeyCode 的用途。示例代码:
public class ExampleScript : MonoBehaviour
{
    public int index = 0;
    public Vector3[] positions = new Vector3[the amount of positions you have];
    
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.S))
        {
            transform.position = positions[index];
            index++;
        }
    }
}
  1. 你想移动一个固定的数量。

使用相同的代码,但没有数组和 int,而是使用 Vector3 来表示您想要移动多少。然后,在 GetKeyDown 中,您将执行类似 transform.position += moveAmount 的操作。

:)

PS:在 Stackoverflow 上提问时,您应该添加更多细节,但这是一个非常好的问题,尤其是与我见过的其他问题相比。


推荐阅读