点击时将GameObject移动一定距离

时间:2017-09-03 18:51:06

标签: javascript c# unity3d

我在Unity中制作游戏,我想在单击按钮时将对象移动一定距离,然后停止直到我再次单击它。我尝试过Lerp功能,但我无法正确发挥所需的效果

1 个答案:

答案 0 :(得分:0)

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

if(Input.GetMouseButtonDown(0))
{
    transform.Translate(Vector3ToMove);
}

变量Vector3ToMove将是一个Vector3,它存储您希望它相对于它的当前位置移动的向量。这是有用的,但是它不平滑并且看起来不是特别令人满意。为了实现平滑移动,您需要使用Lerp功能,这个lerp功能需要被调用多个帧才能到达该位置,这可能是您之前出错的地方。以下是使用Vector3.Lerp

获得平滑效果的示例代码
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);
}

Vector3ToMove就像前面的例子一样,是你想要应用于对象位置的向量增量。您可能希望在此处提供的示例中调整速度变量以获得良好的平滑速度,您也可以尝试使用Vector3.SmoothDamp获得稍微不同的平滑效果。