将立方体移回其原始位置

时间:2015-10-19 15:45:01

标签: c# unity3d

当我在我的立方体的x和z轴上使用transform.Translate时,它会根据按键移动。但是当用户停止按键并且默认轴是x = 0,z = 0时,我希望立方体缓慢地向后移动到它的原始位置。

public float move = 1f;

void Update ()
{
     this.transform.Translate (Input.GetAxis ("Horizontal") / move, 0f,     Input.GetAxis ("Vertical") / move);
}

2 个答案:

答案 0 :(得分:2)

所以你最好的选择是保存原来的位置

private Vector3 _intialPosition;
private float _duration = 0.4f;
private float _startTime;

void Awake()
{
    _initialPosition = transform.position;
}

void Start() {
    _startTime = Time.time;
}

然后检查是否按下了按键,如果没有按下,则将其移回初始位置

void Update()
{
    if(Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0) 
    {
        //Logic here to move via arrows...
    }
    else 
    {
        transform.position = Vector3.Lerp(transform.position, _initialPosition, (Time.time - _startTime ) / _duration);
    }
}

Unity文档

Lerp

答案 1 :(得分:0)

您可以使用Vector3.MoveTowards将当前变换缓慢移动到目标或原始变换位置。

private Transform original;
public float speed = 0.5f;

void Awake()
{
    original = transform;
}

void Update() {
    float step = speed * Time.deltaTime;
    transform.position = Vector3.MoveTowards(transform.position, original.position, step);
}

Unity3d documention - Vector3.MoveTowards