Unity在刚体组合物体上的不同行为

时间:2018-12-23 12:53:05

标签: c# unity3d rigid-bodies

为什么这两个相同的对象表现出不同的行为?

对象

one:父Sphere1(刚体使用重力)             -child Cube1

two:父Cube2(刚体使用重力)             -child Sphere2

在这种情况下,我认为他们的质心是相同的位置。 但是对象one是稳定的,而另一方面two是不稳定的(向下滚动)。

此问题已解决
此问题由脚本附加的父对象解决。
实话说,我已经将重心脚本附加到了两个父对象上。此脚本将重心设置在附加此对象的对象中心,而不是两个对象的中心。删除脚本后,两个对象均掉落。

using UnityEngine;
using System.Collections;
public class centerOfMass : MonoBehaviour
{
    Vector3 center;
    private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
    center = rb.centerOfMass;
}

void Update()
{
    Debug.DrawLine(transform.position, transform.position + transform.rotation * center);
}

void OnDrawGizmos()
{
    rb = GetComponent<Rigidbody>();
    center = rb.centerOfMass;
    Gizmos.color = Color.red;
    Gizmos.DrawSphere(transform.position + transform.rotation * center, 0.08f);
}

}

enter image description here

2 个答案:

答案 0 :(得分:1)

当GameObject是另一个的子代时,该子代将跟随父代。如果父母不在地面上并受到重力的影响,父母会掉到地上,孩子也会跟着走。

在您的情况下:

  • 在左侧,球体(父级)已经在地面上,因此它 不会从那里移动,盒子(孩子)也不会起作用。

  • 在右边,它是父级的Box,在空中,而不是在
    地面,因此它将一直接触到地面。球体

答案 1 :(得分:0)

作为我的测试,他们两个都跌倒了。

您是否忘记在第一个球体上添加刚体?

enter image description here

相关问题