当我在我的立方体的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);
}
答案 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文档
答案 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);
}