1

当玩家点击屏幕左侧时,我希望我的玩家向左移动。现在,我的播放器只在我按住鼠标按钮时移动。我真正想要的是让他不断向左移动,直到我按下一次屏幕时他达到目标位置。

有人可以告诉我我的代码中缺少什么以允许这种情况发生吗?

void FixedUpdate() 
{

    if(Input.GetMouseButtonDown(0))
    {
        if(Input.mousePosition.x < (Screen.width*2)/3 && Input.mousePosition.y > Screen.height/3)
        {
            if(position == middle)
            {
                MoveLeft();
            }   
        }
    }
}

void MoveLeft()
{
    var pos = rigidbody.position;
    float xPosition = left.transform.position.x;
    pos.x = Mathf.Lerp(pos.x, xPosition, speed * Time.deltaTime);
    rigidbody.position = pos;
}

我的方法是在 FixedUpdate 中,因为我正在移动玩家刚体而不是平移实际玩家。

4

1 回答 1

0

现在玩家只有在你点击鼠标按钮时才会移动,因为你的代码就是这样写的:你检查鼠标是否每帧都被按下,并且只有当它移动刚体时。

如果你想让玩家移动不管鼠标是否按下,你应该创建某种变量来保存播放器的状态,并设置按下鼠标按钮时向左移动,并设置它在按下时停止玩家达到他的目标。

如果我正确理解了你的目标,它看起来像这样:

bool moveLeft = false;

void FixedUpdate() 
{

    if(Input.GetMouseButtonDown(0)
        && (Input.mousePosition.x < (Screen.width*2)/3 && Input.mousePosition.y > Screen.height/3))
    {
        moveLeft = true;
    }

    if (moveLeft
        && (position == middle))
    {
        MoveLeft();
    }
    else
    {
        moveLeft = false;
    }
}

void MoveLeft()
{
    var pos = rigidbody.position;
    float xPosition = left.transform.position.x;
    pos.x = Mathf.Lerp(pos.x, xPosition, speed * Time.deltaTime);
    rigidbody.position = pos;
}
于 2014-05-19T14:42:03.243 回答