控制数字继续上下移动并且始终朝向摄像机

private bool UpOrDown = true;

private Transform machineIDRoot;
private List<GameObject> stroeMachineID = new List<GameObject>();

//存储机器编号
public void StoreMachineIDShow()
{
  //发现机器编号根节点
  machineIDRoot = factory.transform.FindChild("MachineIDRoot");
  foreach (Transform obj in machineIDRoot)
  {
    if (!stroeMachineID.Contains(obj.gameObject))
    {
      stroeMachineID.Add(obj.gameObject);
    }
  }
}
//机器编号的动画及其控制
private void MachineIDAnimControl()
{
  foreach (GameObject obj in stroeMachineID)
  {
    obj.transform.LookAt(new Vector3(Camera.main.transform.position.x, obj.transform.position.y, Camera.main.transform.position.z));
    if (UpOrDown)
    {
      obj.GetComponent<Transform>().DOLocalMoveY(38, 3);
    }
    else
    {
      obj.GetComponent<Transform>().DOLocalMoveY(33, 3);
    }
    if (Vector3.Distance(obj.transform.localPosition, new Vector3(obj.transform.localPosition.x, 38, obj.transform.localPosition.z))<0.1f)
    {
      UpOrDown = false;
    }
    if (Vector3.Distance(obj.transform.localPosition, new Vector3(obj.transform.localPosition.x, 33, obj.transform.localPosition.z)) < 0.1f)
    {
      UpOrDown = true;
    }
  }
}

另一种方法:

GameObject facilityIDParent;
List<GameObject> storeFacilityId = new List<GameObject>();;

private void SetFacilityIDShowString()
{
  storeFacilityId.Clear();
  facilityIDParent = factory.transform.FindChild("facilityIDParent").gameObject;
  foreach (Transform kk in facilityIDParent.transform)
  {
    storeFacilityId.Add(kk.gameObject);
    kk.GetComponent<TextMesh>().text = dataLogicControl.StoreFacilityData[kk.name].id;
  }
}

private void FacilityIDAnimationController()
{
  foreach (var kk in storeFacilityId)
  {
    kk.transform.LookAt(new Vector3(Camera.main.transform.position.x, kk.transform.position.y, Camera.main.transform.position.z));
    if (UpOrDown)
    {
      kk.transform.localPosition = Vector3.Lerp(kk.transform.localPosition, new Vector3(kk.transform.localPosition.x, 40, kk.transform.localPosition.z), Time.deltaTime);
    }
    else
    {
      kk.transform.localPosition = Vector3.Lerp(kk.transform.localPosition, new Vector3(kk.transform.localPosition.x, 35, kk.transform.localPosition.z), Time.deltaTime);
    }
    if (Vector3.Magnitude(kk.transform.localPosition - new Vector3(kk.transform.localPosition.x, 40, kk.transform.localPosition.z)) < 0.1f)
    {
      UpOrDown = false;
    }
    if (Vector3.Magnitude(kk.transform.localPosition - new Vector3(kk.transform.localPosition.x, 35, kk.transform.localPosition.z)) < 0.1f)
    {
      UpOrDown = true;
    }
  }
}

原文地址:https://www.cnblogs.com/Study088/p/7339336.html