Проблема с физикой.

Программирование на Юнити.

Проблема с физикой.

Сообщение archibalt 18 июн 2018, 21:57

Добрый вечер, уважаемые форумчане.
Возникла идея создать скилл. Идея такая, есть локация, по ней разбросаны булыжники большие, и чтобы при нажатии на определенную клавишу этот камень разрывался на куски и летел в нужную сторону. Так вот, у меня есть 2 объекта грубо говоря, камень обычный, и камень разбитый на куски в блендере.
Синтаксис:
Используется csharp
//skills

                if(Input.GetKey(KeyCode.E)){
                        RaycastHit hit;
                        Vector3 fwd = transform.TransformDirection(Vector3.forward);
                                if(Physics.Raycast(transform.position, fwd, out hit, 10)){
                                        if(hit.collider.tag == "stone"){
                                                Destroy(hit.transform.gameObject);
                                                GameObject bStone = Instantiate(brokenStone, hit.transform.position, Quaternion.identity);
                                                Rigidbody rbStone = bStone.GetComponent<Rigidbody>();
                                                rbStone.AddForce(fwd * 2000);
                                               
                                        }
                                }
                }
 

Проблема заключается в следующем, так как камень разбит на мелкие кусочки у них есть родитель, дабы собрать их в кучу в инспекторе. Как можно повлиять на всех, потому что если воздейсвовать на родителя кусочки не будут разлетаться.
Может быть использовать цикл? Или возможно есть другие соображения? Буду очень рад совету.
Аватара пользователя
archibalt
UNец
 
Сообщения: 20
Зарегистрирован: 18 июн 2018, 21:50

Re: Проблема с физикой.

Сообщение 1max1 18 июн 2018, 22:07

ну а чем цыкл не устраивает?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Проблема с физикой.

Сообщение archibalt 18 июн 2018, 22:30

1max1 писал(а):ну а чем цыкл не устраивает?


Честно, думал просто мало-ли кто-то даст совет, именно который будет по оптимизированнее что-ли...
Аватара пользователя
archibalt
UNец
 
Сообщения: 20
Зарегистрирован: 18 июн 2018, 21:50

Re: Проблема с физикой.

Сообщение 1max1 18 июн 2018, 23:06

мне кажется раскидать десяток кусков камней не так уж и требовательно
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Проблема с физикой.

Сообщение archibalt 18 июн 2018, 23:17

1max1 писал(а):мне кажется раскидать десяток кусков камней не так уж и требовательно


Сейчас пробую! А вы случайно незнаете как у каждого элемента кодом отключить родителя?
Пробывал bStone.transform.GetChild(i).gameObject.transform.parent = null; не помогло.
Ошибку выбивает "Transform child out of bounds"
Аватара пользователя
archibalt
UNец
 
Сообщения: 20
Зарегистрирован: 18 июн 2018, 21:50

Re: Проблема с физикой.

Сообщение archibalt 18 июн 2018, 23:46

Обошелся без этого, сделал простой цикл:
Синтаксис:
Используется csharp
for(int i = 0; i != bStoneChild; i++){
                                                        Rigidbody rbStone =  bStone.transform.GetChild(i).gameObject.AddComponent<Rigidbody>();
                                                        bStone.transform.GetChild(i).gameObject.AddComponent<BoxCollider>();
                                                        rbStone.AddForce(fwd * 1000);
                                                }
 


Всё получилось. Спасибо.
Аватара пользователя
archibalt
UNец
 
Сообщения: 20
Зарегистрирован: 18 июн 2018, 21:50


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4