Unity 3D - 无法设置我碰撞的GameObject的父级

时间:2016-09-10 12:53:13

标签: unity3d 3d game-physics

这个错误让我陷入其中,我无法弄明白!

我有一把空枪,当我把它移到弹匣附近时,它有一个碰撞触发器抓住弹匣,将其缩放并插入枪中。这个位工作正常。但是在代码中我还将弹匣的父级设置为枪并将重力设置为false并将isKinematic设置为true - 这些位不会发生。因此,弹匣缩放到枪上,然后漂浮到远处,当我在Unity中看时,它不会成为枪的孩子,重力和运动都是未经检查的,即使我明确地将它们设置在下面。如何正确缩放和定位杂志,但是没有制作母版和刚体编辑?

以下是代码:

//THIS CLASS IS A CHILD OF THE GUN
public class GunBody : MonoBehaviour {

void OnTriggerEnter(Collider collider)
{
Debug.LogError("collision with well");

//check if the collision was with the magazine
if (collider.gameObject.name == "Magazine 1")
{
//reload the gun if it was
addClip(collider.gameObject);
}
}

public void addClip(GameObject magazine)
{
magazine.transform.parent = transform.parent; //DOES NOT WORK
magazine.transform.position = transform.parent.position;
magazine.transform.rotation = transform.parent.rotation;
magazine.transform.localRotation = Quaternion.Euler(-89.96101f, 0f, 0f);
magazine.transform.localScale = new Vector3(14f, 20f, 20f);
magazine.transform.localPosition = new Vector3(0f, -0.8215461f, 1.64772f);
magazine.GetComponent<Rigidbody>().useGravity = false; //DOES NOT WORK
magazine.GetComponent<Rigidbody>().isKinematic = true; //DOES NOT WORK
}

希望有人能发现出了什么问题?

由于

3 个答案:

答案 0 :(得分:0)

当您执行magazine.transform.parent = transform.parent;时,将脚本的父级设置为杂志的父级。我不知道您的代码是如何组织的,但是您确定要将杂志设置为GunBody's object父母的孩子吗?也可以尝试使用magazine.transform.SetParent(this.transform)

答案 1 :(得分:0)

这种规模和定位问题来自于没有(1,1,1)规模的枪支。试着把枪和杂志放到另一个空物上。

答案 2 :(得分:0)

你可以做到  magazine.transform.SetParent(transform.parent,false);

因此将根据Parent的位置和方向进行设置。无需编写前3行代码来设置父位置和旋转。