当我有 3 个相同的对象时,只有一个游戏对象统一移动

Only one game object moves in unity when I have 3 identical objects

这让我烦恼了一段时间,我找不到解决办法。只有 ground3 移动,而其他 2 个留在原地。我正在使用 unity 并做一个 2d 项目。

代码:

using System.Collections.Generic;
using UnityEngine;

public class GroundMovement : MonoBehaviour
{
    public float globalspeed;

    public GameObject Ground1;
    public float Ground1Speed;
    Rigidbody2D rb1;

    public GameObject Ground2;
    public float Ground2Speed;
    Rigidbody2D rb2;

    public GameObject Ground3;
    public float Ground3Speed;
    Rigidbody2D rb3;


    // Start is called before the first frame update
    void Start()
    {
        rb1 = Ground1.GetComponent<Rigidbody2D>();
        rb2 = Ground1.GetComponent<Rigidbody2D>();
        rb3 = Ground1.GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        rb1.velocity = new Vector2(globalspeed + Ground1Speed, 0);
        rb2.velocity = new Vector2(globalspeed + Ground2Speed, 0);
        rb3.velocity = new Vector2(globalspeed + Ground3Speed, 0);
    }
}

问题出在Start()方法,当你分配刚体时,你将它们都分配给Ground1 GameObject中的刚体,方法应该是这样的:

void Start()
{
    rb1 = Ground1.GetComponent<Rigidbody2D>();
    rb2 = Ground2.GetComponent<Rigidbody2D>();
    rb3 = Ground3.GetComponent<Rigidbody2D>();
}