Страница 1 из 1

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

СообщениеДобавлено: 18 июн 2018, 21:57
archibalt
Добрый вечер, уважаемые форумчане.
Возникла идея создать скилл. Идея такая, есть локация, по ней разбросаны булыжники большие, и чтобы при нажатии на определенную клавишу этот камень разрывался на куски и летел в нужную сторону. Так вот, у меня есть 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);
                                               
                                        }
                                }
                }
 

Проблема заключается в следующем, так как камень разбит на мелкие кусочки у них есть родитель, дабы собрать их в кучу в инспекторе. Как можно повлиять на всех, потому что если воздейсвовать на родителя кусочки не будут разлетаться.
Может быть использовать цикл? Или возможно есть другие соображения? Буду очень рад совету.

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

СообщениеДобавлено: 18 июн 2018, 22:07
1max1
ну а чем цыкл не устраивает?

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

СообщениеДобавлено: 18 июн 2018, 22:30
archibalt
1max1 писал(а):ну а чем цыкл не устраивает?


Честно, думал просто мало-ли кто-то даст совет, именно который будет по оптимизированнее что-ли...

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

СообщениеДобавлено: 18 июн 2018, 23:06
1max1
мне кажется раскидать десяток кусков камней не так уж и требовательно

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

СообщениеДобавлено: 18 июн 2018, 23:17
archibalt
1max1 писал(а):мне кажется раскидать десяток кусков камней не так уж и требовательно


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

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

СообщениеДобавлено: 18 июн 2018, 23:46
archibalt
Обошелся без этого, сделал простой цикл:
Синтаксис:
Используется 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);
                                                }
 


Всё получилось. Спасибо.