两个位置上的角色Unity

时间:2018-03-06 15:15:13

标签: c# unity3d

我有一个问题。我必须让角色在两个位置移动,如下图所示。 ExampleImg

我想知道的是如何做这件事。例如,角色自动向右移动,然后当它点击时,它已经移动到顶部栏并仍然向右移动,并且当它点击它时它已经返回到向下的栏。

  public float speed;
public GameObject[] buttons;
private void Start()
{
    foreach (GameObject button in buttons)
        button.GetOrAddComponent<MouseEventSystem>().MouseEvent += ChangeBoyPosition;
}

private void ChangeBoyPosition(GameObject target, MouseEventType type)
{
    if (type == MouseEventType.CLICK)
    {
        int buttonIndex = System.Array.IndexOf(buttons, target);
        if (buttonIndex == 0)
        {
            //do down position
        }
        else
        {
            //do up position

        }
    }
}

void Update()
{
    //used for automatic movement
    //set a speed that responds to the speed of the boy
    //automatically move it to the right, then we will change the direction when it reaches the X axis limit
    transform.Translate(Vector3.right * speed * Time.deltaTime);
}

基本上我有两个按钮,向上和向下,我操纵角色。如果有人知道如何让这个物理变得更简单?谢谢!!!

1 个答案:

答案 0 :(得分:1)

您可以尝试使用map修改y值。

Physics2D.gravity

你可能会把它放在更新功能中,因为它需要检查输入,因此我建议创建两个向量Physics2D.gravity = new Vector2(0, -1); // To go down Physics2D.gravity = new Vector2(0, 1); // To go up gravityUp并将gravityDown设置为等于一个或另一个,取决于你想去的方向。

像这样:

Physics.gravity

同样适用于3D,但您必须使用Vector2 gravityUp = Vector2.up; Vector2 gravityDown = Vector2.down; Vector3

您的代码可能如下所示:

Physics.gravity