c# - 如何停止自己飞起来的物体?
问题描述
我有一堆立方体,当与特定物体碰撞时,2 个小立方体会破裂。打破立方体后应该在侧面滑动,但是当我将堆栈与我的对象碰撞时它们会自行飞起来。我可以以任何简单的方式阻止它并允许小立方体仅在 X 轴的侧面(左右)上滑动吗?
Vector3 pos = new Vector3(_pos.x, victim.position.y, victim.position.z);
Vector3 victimScale = victim.localScale;
float distance = Vector3.Distance(victim.position, pos);
if (distance >= victimScale.x/2) return false;
Vector3 leftPoint = victim.position - Vector3.right * victimScale.x/2;
Vector3 rightPoint = victim.position + Vector3.right * victimScale.x/2;
Material mat = victim.GetComponent<MeshRenderer>().material;
Destroy(victim.gameObject);
GameObject rightSideObj = GameObject.CreatePrimitive(PrimitiveType.Cube);
rightSideObj.transform.position = (rightPoint + pos) /2;
float rightWidth = Vector3.Distance(pos,rightPoint);
rightSideObj.transform.localScale = new Vector3( rightWidth ,victimScale.y ,victimScale.z );
rightSideObj.AddComponent<Rigidbody>();
rightSideObj.GetComponent<MeshRenderer>().material = mat;
GameObject leftSideObj = GameObject.CreatePrimitive(PrimitiveType.Cube);
leftSideObj.transform.position = (leftPoint + pos)/2;
float leftWidth = Vector3.Distance(pos,leftPoint);
leftSideObj.transform.localScale = new Vector3( leftWidth ,victimScale.y ,victimScale.z );
leftSideObj.AddComponent<Rigidbody>();
leftSideObj.GetComponent<MeshRenderer>().material = mat;
我正在使用一个代码将大立方体分解为 2 个小立方体。为了在侧面滑动 leftsideobj 和 rightsideobj,我使用了 AddForce。
解决方案
首先,是刹车,不是刹车。
您可以对碎片施加约束以禁止沿 y 或 z 轴运动。
推荐阅读
- eclipse - 如何在eclipse中打印原始编译时错误?
- scala - 如何在 Scala 的过滤器中使用 if-else 条件?
- php - php Mysqli 查询不返回任何值或错误
- android - Spinner.setOnItemClickListener 不工作
- javascript - 需要帮助在 sap ui5 中的值帮助的按下事件中查找动态创建的输入控件的 id
- javascript - 从 json 对象动态调用 jquery 函数
- php - 为什么 laravel 应用程序不读取我的代码?
- android - 如何解决错误:“找不到符号类 R”
- kubernetes - ubuntu 中的 Kubernetes 仪表板安装问题
- visual-studio-code - 如何在 Linux 上的 VScode 中键入反斜杠