我有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
的值的错误有关。不要在您的项目中更新此值,因为它可能会在运行时中断物理计算。