Суббота, 18 Мая 2024, 05:14

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » Nooz [4]
Результаты поиска
NoozДата: Воскресенье, 25 Октября 2015, 18:30 | Сообщение # 1 | Тема: Поворат объекта + Поворот объекта перпендикулярно другому
был не раз
Сейчас нет на сайте
Да, Да!! Топик помог! Большое спасибо!!

В итоге код получился примерно таким:
Код

   //Platform - платформа на которой стоит игрок
    //rigibody - переменная равна GetComponent<Rigidbody>();    
    //Gravity - моя переменная.
    float curDir = 0f; // compass indicating direction
    void FixedUpdate()
    {
        float turn = Input.GetAxis("Horizontal");
        curDir = (curDir + turn) % 360;
        RaycastHit hit;
        Physics.Raycast(new Ray(transform.position, -transform.up),out hit);                
        var rot = Quaternion.FromToRotation(Vector3.up, hit.normal);
        var oldrot = rigibody.rotation;
        rigibody.rotation = rot*Quaternion.Euler(0, curDir, 0);        
        rigibody.AddForce(-Platform.up * Gravity);
        rigibody.AddForce(transform.forward * Input.GetAxis("Vertical") * 10 * Speed);
    }
NoozДата: Воскресенье, 25 Октября 2015, 14:11 | Сообщение # 2 | Тема: Поворат объекта + Поворот объекта перпендикулярно другому
был не раз
Сейчас нет на сайте
Но при этом же если платформу повернуть то игрок будет под наклоном к платформе, а не перпендикулярно?

К тому же мой код (тот что выше) уже держит игрока ровно на платформе в любом ее положении. Но.. Я не могу его поворачивать в стороны направо и налево. Т.к. думаю поворот конфликтует с тем поворотом, что я делаю для выравнивания игрока перпендикулярно платформе.

Я думаю, что вот после этих строк нужно rigibody.rotation умножить на, что то что даст мне нужный поворот но пока я не догадался что именно нужно сделать.

Код
var rot = Quaternion.FromToRotation(Vector3.up, hit.normal);     
rigibody.rotation = rot;
NoozДата: Воскресенье, 25 Октября 2015, 12:46 | Сообщение # 3 | Тема: Поворат объекта + Поворот объекта перпендикулярно другому
был не раз
Сейчас нет на сайте
Цитата

А что ему до этого мешало стоять вертикально на платформе?

Когда платформа наклоняется, игрок падает из-за наклона. а если запретить ему наклоняться (заморозить ось) то он стоит не перпендикулярно платформе.

Цитата
И по какой оси поворачивается платформа?

Платформа вращается хаотично. (точнее платформой управляет игрок, и может задать ей любую скорость или вращение. По сути платформа в итоге будет мостиком космического корабля).
NoozДата: Суббота, 24 Октября 2015, 16:20 | Сообщение # 4 | Тема: Поворат объекта + Поворот объекта перпендикулярно другому
был не раз
Сейчас нет на сайте
Добрый день!
Я пытаюсь написать скрипт, который позволит игроку стоять вертикально на поворачивающейся платформе. Это получилось, но при этом увы теряется возможность поворачивать игрока в стороны. Подскажите, пожалуйста, как в таком случае заставить игрока поворачиваться вокруг вертикальной оси

Код

    //Platform - платформа на которой стоит игрок
    //rigibody - переменная равна GetComponent<Rigidbody>();
    void FixedUpdate()
    {               
        RaycastHit hit;
        Physics.Raycast(new Ray(transform.position, -transform.up),out hit);        
        var rot = Quaternion.FromToRotation(Vector3.up, hit.normal);     
        rigibody.rotation = rot;

        rigibody.AddForce(-Platform.up * Gravity);
         
        //Вот этот код работает неверно. И лучше бы поворачивать без физики       
        rigibody.AddTorque(transform.up * Input.GetAxis("Horizontal") * 100);
    }
Форум игроделов » Записи участника » Nooz [4]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг