Javascript 当我单击时,将游戏对象移动一定距离

Javascript 当我单击时,将游戏对象移动一定距离,javascript,c#,unity3d,Javascript,C#,Unity3d,我在Unity中制作一个游戏,当我点击一个按钮时,我想将一个物体移动一定距离,然后停止,直到我再次点击它。我已经尝试过使用Lerp功能,但我无法正确地实现所需的效果如果您想立即执行此操作,那么这很容易,您只需检测鼠标输入,然后将对象移动到您想要的任何方向。下面是一些示例c#代码(在更新函数中) 变量Vector3ToMove是一个Vector3,它存储您希望它相对于当前位置移动的向量。这是功能性的,但它不是平滑的,看起来也不是特别令人愉快。为了实现平稳的移动,您需要使用Lerp函数,需要对多个帧

我在Unity中制作一个游戏,当我点击一个按钮时,我想将一个物体移动一定距离,然后停止,直到我再次点击它。我已经尝试过使用Lerp功能,但我无法正确地实现所需的效果

如果您想立即执行此操作,那么这很容易,您只需检测鼠标输入,然后将对象移动到您想要的任何方向。下面是一些示例c#代码(在更新函数中)

变量Vector3ToMove是一个Vector3,它存储您希望它相对于当前位置移动的向量。这是功能性的,但它不是平滑的,看起来也不是特别令人愉快。为了实现平稳的移动,您需要使用Lerp函数,需要对多个帧调用此Lerp函数,以使其达到您之前可能出错的位置。下面是一些示例代码,使用


Vector3ToMove与上一个示例一样,是要应用于对象位置的向量增量。您可能需要调整此处提供的示例中的速度变量以获得良好的平滑速度,您也可以尝试使用以获得稍微不同的平滑效果。

非常感谢!这正是我所需要的:)但是如果我不想通过鼠标或键盘移动,而是通过画布按钮,那该怎么办呢?你可以使用Unity事件系统来实现,你可以创建一个函数,其中包含我在Input if语句中输入的代码,然后使用Unity UI事件系统,你可以使用按下的事件调用该函数。
if(Input.GetMouseButtonDown(0))
{
    transform.Translate(Vector3ToMove);
}
Vector3 TargetPosition;
float speed = 1f;

void Start()
{
    TargetPosition = transform.position;
}    

void Update()
{
    if(Input.GetMouseButtonDown(0))
    {
        TargetPosition += Vector3ToMove;
    }

    transform.position = Vector3.Lerp(transform.position, TargetPosition, speed * Time.deltaTime);
}