Создание кубов. Реализация функций MineCraft'a.

Общие вопросы о Unity3D

Создание кубов. Реализация функций MineCraft'a.

Сообщение FunnyAlien 11 мар 2011, 21:41

Доброго вечера, уважаемые!
Помогите, пожалуйста, написать скрипт. У меня есть куб. При нажатии ПКМ он удаляется (Destroy), а при нажатии ЛКМ, на нем создается новый.
В чем моя проблема. Нужно создавать кубы на кубах так как хочет игрок. Нап.: нажал на верх куба, создался новый префаб на 1 юнит выше. Ну и так далее.
Пробовал сделать шесть коллайдеров, но потом, сами понимаете, отбросил эту затею.

Управление кубами требуется похожим что-то на это.

[curved_hands]

Заранее благодарю!
Изображение
Аватара пользователя
FunnyAlien
UNIт
 
Сообщения: 94
Зарегистрирован: 03 дек 2009, 19:10
Откуда: Тюмень
  • Сайт
  • ICQ

Re: Создание кубов. Реализация функций MineCraft'a.

Сообщение WhiteDevil 11 мар 2011, 21:51

Можно Реем добывать нормаль полигона, по которому кликаешь. Так как объект кубический, то нормаль будет красивая: ортогональная и единичная. Полученный вектор умножаешь на размер куба и получишь результатную точку инстанциирования нового куба

http://docs.unity3d.ru/ScriptReference/RaycastHit.html
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Создание кубов. Реализация функций MineCraft'a.

Сообщение Avatarchik 12 мар 2011, 01:06

Держи: :-B
Синтаксис:
Используется csharp
public GameObject tilePrefab;
    private Ray ray;
    private RaycastHit hitElement;
    private float size;
        // Use this for initialization
        void Start () {
        size = tilePrefab.transform.localScale.x;
        }
       
        // Update is called once per frame
        void Update () {
        if (Input.GetMouseButtonDown(0)) {
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Physics.Raycast(ray, out hitElement, Mathf.Infinity, 1);
            if (hitElement.transform != null) {
                Instantiate(tilePrefab,hitElement.transform.position + hitElement.normal * size,new Quaternion(0,0,0,0));
            }
        } else if (Input.GetMouseButtonDown(1)) {
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Physics.Raycast(ray, out hitElement, Mathf.Infinity, 1);
            if (hitElement.transform != null) {
                Destroy(hitElement.transform.gameObject);
            }
        }
       
        }
Добавить ava-karaban в Skype
Аватара пользователя
Avatarchik
UNITрон
 
Сообщения: 274
Зарегистрирован: 04 апр 2009, 15:36
Откуда: Украина(Донецк)
  • ICQ

Re: Создание кубов. Реализация функций MineCraft'a.

Сообщение WhiteDevil 12 мар 2011, 18:41

Помоему, оно и себе, и просящему помощи приятнее, когда он сам все своими ручками напишет, чем давать готовенький торт :)
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Создание кубов. Реализация функций MineCraft'a.

Сообщение Paul Siberdt 12 мар 2011, 19:43

... особливо, если учесть, что MineCraft на подобной механике не создать.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Создание кубов. Реализация функций MineCraft'a.

Сообщение FunnyAlien 13 мар 2011, 11:32

Paul Siberdt писал(а):... особливо, если учесть, что MineCraft на подобной механике не создать.


К счастью никакого майнкрафта я делать не собираюсь ;)
Изображение
Аватара пользователя
FunnyAlien
UNIт
 
Сообщения: 94
Зарегистрирован: 03 дек 2009, 19:10
Откуда: Тюмень
  • Сайт
  • ICQ


Вернуться в Общие вопросы

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

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