Как прекратить взлетать объекты самостоятельно? - PullRequest
0 голосов
/ 28 апреля 2019

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

1 Ответ

1 голос
/ 28 апреля 2019

Во-первых, это слом, а не тормоз.

Вы можете наложить на куски ограничение , чтобы запретить движение по осям y или z.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...