在Unity 2D中移动简单对象

本文关键字:简单 单对象 移动 Unity 2D | 更新日期: 2023-09-27 17:50:46

我试图在Unity中移动一个简单的Object,但我得到以下错误消息:

cannot modify the return value of unityengine.transform.position because itar is not variable

下面是我的代码:
using UnityEngine;
using System.Collections;
public class walk : MonoBehaviour {
    // Use this for initialization
    void Start () {
    }
    // Update is called once per frame
    void Update () {
        float movespeed = 0.0f;
        movespeed++;
        transform.position.x  = transform.position.x + movespeed;
    }
}

在Unity 2D中移动简单对象

您不能直接在position上分配x值,因为它是从属性getter返回的值类型。(参见:不能修改返回值错误c#)

相反,您需要分配一个新的Vector3值:
transform.position = new Vector3(transform.position.x + movespeed, transform.position.y);

或者,如果您保持大多数坐标值相同,您可以使用Translate方法来代替相对移动:

transform.Translate(movespeed, 0, 0)

比Chris的回答稍微好一点:

transform.position = new Vector2(transform.position.x + movespeed * Time.deltaTime, transform.position.y);

Time.deltaTime两帧之间的时间间隔——这个乘法意味着无论玩家的电脑有多快或多慢,速度都是一样的