引用子GameObject会破坏addForce

时间:2019-06-18 17:31:42

标签: c# unity3d rigid-bodies

我有4个游戏对象(我很可能会制作预制件)。所有4个对象都在一个父对象中,我附加了一个脚本来确定在给定时间将由玩家控制的对象。

我对每个游戏对象都有这样的引用:

private void getPlayers()
{
    //Get player Game Objects and place in this array
    players = new GameObject[4];

    for (int i = 0; i < players.Length; i++)
        players[i] = transform.GetChild(i).gameObject;
}

这成功获取了所有引用,并赋予了我直接对每个游戏对象进行更改的能力,如下所示:

getObjects();
currentObject = object[2];
rb = currentObject.GetComponent<Rigidbody>();

我想对currentObject施加一些力量,但这并不符合预期。它以玩家移动的任何方向射击该物体,并以朝该方向滚动的姿势射击。这是我加力的方式:

float x = Input.GetAxis("Horizontal"),
          y = Input.GetAxis("Vertical");

Vector3 movement = new Vector3(x, 0.0f, y);
rb.AddForce(movement * speed);

我以前曾使用过这种方法来加力,它可以完美地工作。但是添加这一行会破坏一切:

players[i] = transform.GetChild(i).gameObject;

另外,我应该注意我是Unity新手级别的开发人员。

更新: 该问题与子对象的引用无关。该问题与我更改Time.fixedDeltaTime的值的错误有关。不要在您的项目中更新此值,因为它可能会在运行时中断物理计算。

0 个答案:

没有答案