首页 > 解决方案 > 当我有 3 个相同的对象时,只有一个游戏对象统一移动

问题描述

这一直困扰着我一段时间,我找不到解决方案。只有ground3在其他 2 个留在原地时才移动。我使用统一并做一个 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);
    }
}

标签: c#unity3dvariablesrigid-bodies

解决方案


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

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

推荐阅读