У меня есть стек из кубиков, которые разбиваются на 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.