как мне заставить игровой объект соответствовать другим формам игровых объектов

Я пытаюсь сделать игру в Unity, и я хочу, чтобы игровой объект падал и соответствовал форме земли под ним.

при запуске игры:

Как начинается игра

что делает:

введите здесь описание изображения

что я хотел бы сделать

введите здесь описание изображения

Я довольно приличный, так что даже намек в правильном направлении был бы полезен. благодаря.


person Nicholas    schedule 15.10.2018    source источник
comment
Попробуйте добавить коллайдер сетки и изменить сетку с помощью кода: answers.unity.com/questions/400406/bend-object-by-script.html   -  person jiveturkey    schedule 15.10.2018


Ответы (1)


Один из способов сделать это — дублировать наземный объект и заменить падающий объект модифицированной версией этого дубликата. Как вы можете это сделать, это сделать следующее при столкновении между падающим объектом и данным наземным объектом:

  1. Убедитесь, что этот падающий объект еще не столкнулся с этим наземным объектом, например, с fallingObject.lastCopiedGroundObject GameObject.
  2. Найдите y из Collider.bounds.size groundObject
  3. Добавьте y к groundObject.transform.position к новому Vector3 newPos
  4. Используйте GameObject newFalling = Object.Instantiate(groundObject, newPos, groundObject.rotation, fallingObject.parent).
  5. Скопируйте rotationalVelocity и velocity из твердого тела падающего объекта в твердое тело newFalling, если это необходимо.
  6. При необходимости добавляйте, удаляйте, изменяйте компоненты на newFalling (например, заменяйте текстуры), чтобы он в дальнейшем вел себя и отображался правильно, как падающий объект, который он заменяет.
  7. Уничтожьте старый падающий объект с помощью fallingObject.Destroy()
  8. Установите lastCopiedGroundObject из newFalling так, чтобы newFalling не выполнял это взаимодействие с тем же groundObject снова, пока не будет сделана другая копия.

Это поместит падающий объект над наземным объектом и позволит ему упасть, используя физический движок, чтобы определить, где он должен лежать сверху.

Одно соображение заключается в том, чтобы вместо этого использовать List<GameObject> alreadyCopiedGroundObjects и добавить недавно столкнувшийся наземный объект в список в старом падающем объекте, чтобы, если падающий объект касается нескольких оснований, он менял свою форму на каждую только один раз, поэтому он не будет t постоянно колеблются между формами в определенных условиях.

person Ruzihm    schedule 15.10.2018