【问题标题】:Creating moving text in unity3D在 unity3D 中创建移动文本
【发布时间】:2020-07-31 13:53:49
【问题描述】:

我正在寻找一种在 Unity3D 中创建文本的方法,该文本看起来像摇晃文本一样轻微移动(没有真正改变位置)。我在游戏中看到了这个,看起来很酷。

换句话说,我希望文本垂直移动一些 x 值并再次回到它的位置。

编码不适合我,这就是我所做的

Vector2 v = transform.position;
v += new Vector2(1f,1f);
transform.position = v;

不工作。有什么建议吗?

我对Unity中的动画不是很熟悉,可以用动画来做吗?

【问题讨论】:

  • 我认为 Vector2 应该只有 2 个参数(x 和 y)。你的第一个变换也拼错了
  • 究竟是什么不工作?
  • 文字移动不流畅
  • “摇晃”有点模糊......你可能是指移动到给定范围内的随机位置,或者只是在一个轴上快速上下移动
  • 为了平稳移动,请始终考虑Time.deltaTmetransform.position += new Vector2 (1f, 1f) * Time.deltaTime; ..

标签: unity3d


【解决方案1】:

你需要使用动画, 动画会使动作流畅。

  • 为您的文本创建动画。
  • 在最后一帧的不同时间帧更改您的 y 使其为 0。(更改 y 值以满足 您的要求)玩希望这会奏效

如果您不熟悉动画,可以观看以下视频,这可能会有所帮助。

https://www.youtube.com/watch?v=_16b6Pl6cvM

【讨论】:

    【解决方案2】:

    使用协程。

    public Text text;
    
    void Start(){
        StartCoroutine(ShakeText());
    }
    
    IEnumerator ShakeText(){
        RectTransform rt = text.rectTransform;
        Vector2 startPos = rt.anchoredPosition;
        for(float t = 0; t <= 1; t += Time.deltaTime * 5){
            rt.anchoredPosition = startPos + Vector2.up * t;
            yield return null;
        }
        for(float t = 0; t <= 1; t += Time.deltaTime * 5){
            rt.anchoredPosition = startPos + Vector2.up * (1 - t);
            yield return null;
        }
        rt.anchoredPosition = startPos;
    }
    

    这是一个上下移动文本的简单示例,但它可以帮助您理解和实现更复杂的东西,混合旋转、缩放等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多