【问题标题】:Trying to move y coordinate试图移动 y 坐标
【发布时间】:2015-02-01 14:41:46
【问题描述】:

我是 Unity 的新手。代码在 2d 和 c# 中。我试图让它在玩家低于时出现在上方,当玩家高于时出现在下方。这是我得到的错误:

Assets/Scripts/Player.cs(23,43):错误 CS1612:无法修改值类型返回值 UnityEngine.Transform.position'. Consider storing the value in a temporary variable Assets/Scripts/Player.cs(27,43): error CS1612: Cannot modify a value type return value ofUnityEngine.Transform.position'。考虑将值存储在临时变量中

这是我遇到问题的代码:

        if (transform.position.y > 5.5f)
        {
            transform.position.y=-10f;
        }
        if (transform.position.y < -10.5f)
        {
            transform.position.y=5;
        }

附:我知道 Unity 的答案,大约 10 小时前我在那里问了我的问题,但版主仍未批准。这就是我在这里的原因。

【问题讨论】:

    标签: c# unity3d coordinates


    【解决方案1】:

    您不能直接使用 transform.position.y 为其设置值。相反,Unity 要求您使用一些临时值或简单地编写如下 -

    if (transform.position.y > 5.5f)
    {
        transform.position = new Vector3(transform.position.x, -10.0f, transform.position.z);
    }
    if (transform.position.y < -10.5f)
    {
        transform.position = new Vector3(transform.position.x, 5.0f, transform.position.z);
    }
    

    或者如果你想使用临时变量,使用这个 -

    if (transform.position.y > 5.5f)
    {
        Vector3 newPosition = new Vector3(transform.position.x, -10.0f, transform.position.z);
        transform.position = newPosition;
    }
    if (transform.position.y < -10.5f)
    {
        Vector3 newPosition = new Vector3(transform.position.x, 5.0f, transform.position.z);
        transform.position = newPosition;
    }
    

    两者都是一样的。但为了方便起见,我会在你的情况下选择第一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2021-01-23
      相关资源
      最近更新 更多