在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;
}
}
您不能直接在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
两帧之间的时间间隔——这个乘法意味着无论玩家的电脑有多快或多慢,速度都是一样的