【问题标题】:Unity Different behavior at rigidbody combined objectUnity 刚体组合物体的不同行为
【发布时间】:2018-12-23 12:53:05
【问题描述】:

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

对象

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);
}

}

【问题讨论】:

  • 如果不是太麻烦,您能否在检查器中包含一个组件屏幕,以便我们可以安全地假设您已正确设置它?
  • @Maakep 谢谢你的建议。对不起大家,这个问题是由于设置重心脚本附加父母造成的。
  • 如果您想添加内容,请编辑原始帖子! :) 代码在 cmets 中很难阅读。另外,要非常清楚你想要实现的目标和正在做的事情。

标签: c# unity3d rigid-bodies


【解决方案1】:

当一个 GameObject 是另一个 GameObject 的子对象时,子对象将跟随父对象。而如果父母不在地里,受重力影响,父母会掉到地上,孩子也会跟着。

在你的情况下:

  • 左侧的 Sphere(父级)已经在地下,所以它 不会从那里移动,盒子(孩子)不会产生任何影响。

  • 在右边,它是父框,它在空中,而不是在
    地面,所以它会直到它接触到地面。球体将
    跟随。

【讨论】:

  • 谢谢您的回答。这个问题是由我的脚本附加的父对象引起的。
  • 伊格纳西奥拥有它的权利。在您的对象的检查器中是 CUBE-Sphere,另一个是 SPHERE-Cube。为了使它们表现相同,它们必须相同。选择你想模仿的对象,左或右,然后使另一个对象相同。
  • (将 Cube2 拖到 Sphere2 上)使它们都静止,或(将 Sphere1 拖到 Cube1 上)使它们都滚动。
【解决方案2】:

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

你忘了在第一个球体上添加一个刚体吗?

【讨论】:

  • 感谢两位男士的讨论。这个问题是由我的脚本附加的父对象引起的。
  • 这不是答案,但这是 shingo 假设添加刚体可以解决问题的答案。有效的答案,虽然不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2016-11-28
  • 1970-01-01
相关资源
最近更新 更多