我不明白为什么我的立方体不能沿Z的fineMovimento(endMovement)vector3位置平移。
以下是脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovimentoPorta : MonoBehaviour {
public Transform target;
Vector3 fineMovimento = new Vector3(221.04f, -8.98f,329);
void Update () {
if (Input.GetKeyDown(KeyCode.P))
{
while (target.position != fineMovimento)
{
target.Translate (Vector3.forward*10.0f*Time.deltaTime); //il cubo si doverbbe muovere lungo l'asse Z +
}
}
}
}
答案 0 :(得分:1)
请勿使用while(...)
中的void Update()
进行翻译(因为在播放模式下按 P 时Unity会挂起)。如果您想平稳地移动到fineMovimento
,一种方法是使用Vector3.Lerp()
。
尝试一下:
public Transform target;
Vector3 fineMovimento;
float smoothTime = 0.125f;
void Start()
{
fineMovimento = target.position; // Initialize
}
void Update ()
{
target.position = Vector3.Lerp(target.position, fineMovimento, smoothTime);
if (Input.GetKeyDown(KeyCode.P))
{
fineMovimento = new Vector3(221.04f, -8.98f,329); // Set end position
}
}
希望这是您想要的。