试图移动y坐标

时间:2015-01-31 15:44:59

标签: c# unity3d coordinates

我是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 of UnityEngine.Transform.position'的值类型返回值。考虑将值存储在临时变量

以下是我遇到问题的代码:

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

P.S。我知道关于Unity的答案,我在10个小时前问过我的问题,主持人还没有获得批准。这就是我在这里的原因。

1 个答案:

答案 0 :(得分:2)

您无法直接使用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;
}

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