Технологии

Помогите с unity3d! - вопрос №1131817

Как сделать так чтобы можно было рубить деревья в unity3d?) если сможете скиньте гайд или скрипты и подскажите как все зделать))

июль 26, 2014 г.

  • Всего ответов: 1

  • Валентин Рязанцев - аватарка

    Валентин Рязанцев

    15-й в Технологиях

    u3d.at.ua
    Создаем простую сцену делаем террейн, освещение и т.д. Берём модель дерева, приделал капсульный колайдер по форме ствола и ещё один боксовый поперёк на листву(чтобы после падения оно не катилось вдоль капсульного колайдера)  , добавляем Rigidbody и делаем true параметр IsKinematic  , это значит что на дерево не влияет физика и когда надо мы его отключаем, чтобы соответственно физика появилась.Добавляем в префаб готовое дерево 

     
     
    .Создал скрипт: 
    Код
    function OnTriggerStay (other : Collider) {      // фунция работы с триггерами 
    if(other.gameObject.name==«Palm»){   //проверяем наличие в триггере объекта с иминем «Palm» 
    if(Input.GetMouseButtonDown(0)){   //при нажатии на ЛКМ.. 
    other.rigidbody.isKinematic = false;    //отключаем параметр isKinematic 
    }
     
     
    Ложим скрипт на камеру стандартного fist person controller'а и приделываем на неё (камеру) колайдер-зону где игрок как-бы размахивает топором, ставим параметр IsTrigger и всё, когда персонаж подходит к дереву и нажимает левую кнопку мыши, то у дерева отключается игнор физики, а так как ствол состоит из капсулы, то оно непременно упадёт(надо малейшая неровность), если хотите можете к дереву силу приложить AddForce, но оно и так падает вполне естественно, я поставил на него массу в 5, всё очень просто. Забыл добавить что надо указать имя дереву «Palm» если хотите использовать мой код, так же можете работать через тег, для этого вместо  if(other.gameObject.name==«Palm»){  надо  if(other.gameObject.tag==«Palm»){ 

    июль 27, 2014 г.