C# 我想把一个球体移动到一个特定的坐标

C# 我想把一个球体移动到一个特定的坐标,c#,unity3d,move,playback,C#,Unity3d,Move,Playback,我已经做了一个脚本,在五个轨道的五个位置移动一个球。但我希望球只能以接近的方式移动,例如,如果球在A位置,如果我按leftarrow,球将移动到左侧,如果我按rightarrow,球将移动到下一个右侧轨道。但问题是,球在五条轨道的中心,我按下向右箭头,球会移动到右边的最后一条轨道上,如果我按下向左箭头,球会移动到左边的最后一条轨道上。 我想我应该清除每个if中的按钮,我该怎么做? 多谢各位 // Start is called before the first frame update void

我已经做了一个脚本,在五个轨道的五个位置移动一个球。但我希望球只能以接近的方式移动,例如,如果球在A位置,如果我按leftarrow,球将移动到左侧,如果我按rightarrow,球将移动到下一个右侧轨道。但问题是,球在五条轨道的中心,我按下向右箭头,球会移动到右边的最后一条轨道上,如果我按下向左箭头,球会移动到左边的最后一条轨道上。 我想我应该清除每个if中的按钮,我该怎么做? 多谢各位

// Start is called before the first frame update
void Start()
{
    transform.position = targetA.position;
}

// Update is called once per frame
void Update()
{
    Movimiento();
}

void Movimiento()
{
    if (transform.position == targetA.position)
    {
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetB.position, step);
        }

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetC.position, step);
        }
    }

    if (transform.position == targetB.position)
    {
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetD.position, step);
        }

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetA.position, step);
        }
    }

    if (transform.position == targetC.position)
    {
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetA.position, step);
        }

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetE.position, step);
        }
    }

    if (transform.position == targetD.position)
    {
        /*if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetE.position, step);
        }*/

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetB.position, step);
        }
    }

    if (transform.position == targetE.position)
    {
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetC.position, step);
        }

        /*if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            float step = speed * Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, targetD.position, step);
        }*/
    }
}

}

您只想移动一步。当您从A移动到B时,您正在输入if的代码(transform.position==targetB.position),因为您已经从A移动到B。当您完成步骤A代码时,您必须跳过B、C、D、EAnd的代码,我该如何做?使用if和Else。另一个选择是订购IF语句E、D、C、B、A。非常感谢