unity3d Unity -将平台从A点移动到B点

kgqe7b3p  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(171)

我试图在Unity中制作一个游戏,我被困在了一个部分,我试图将一个平台从A点移动到B点。
我得到的错误是:
空引用异常:对象引用未设置为对象MovingPlatform.Update()的示例(位于Assets/Scripts/MovingPlatform.cs:30)
源代码为:

public class MovingPlatform : MonoBehaviour
{
    [SerializeField]
    private Transform pointA, pointB;

    private float speed = 1.0f;

    private Transform target;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (transform.position == pointA.position)
        {
            target = pointB;
        }
        else if (transform.position == pointB.position)
        {
            target = pointA;
        }
        
        transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);

    }
}

我该怎么办?
因为站台根本就没动。

j9per5c4

j9per5c41#

这个错误告诉你哪里出了问题。在你的脚本的第30行你有一个引用,它是null(因此是NullReferenceException),你试图用它做一些事情(例如访问属性)。我猜它是target.position

transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);

当你的if-语句不触发时,你应该在Start()中添加target = pointB;来正确地初始化target(我假设你想开始移动到pointB)。

相关问题