Не понимаю что не так[РЕШЕНО]

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

Не понимаю что не так[РЕШЕНО]

Сообщение tema_petrosyan 16 фев 2020, 13:28

Написал я такой код, а он не фурычит, и не понимаю что не так :(
В общем, суть такова:
Я нажимаю на объект, он поворачивается на определённый градус и выполняет функцию которую получает из другого скрипта.
Пожалуйста, помогите!

вот это я повесил на объект который надо жать
Синтаксис:
Используется csharp
public class руль : MonoBehaviour
{
    public GameObject engine;
    public GameObject control_wheel;

    private int count = 0;

    public void OnMouseDown()
    {
        if (Input.GetMouseButtonDown(0))
        {
            engine.GetComponent<moving>().run();
             control_wheel.transform.eulerAngles = new Vector3(-90, 0, 45);
            count += 1;
            if (count == 4)
            {
                control_wheel.transform.eulerAngles = new Vector3(-90, 0, 45);
                engine.GetComponent<moving>().stop();
                count = 0;
            }
        }
    }
}


а вот это управляющий
Синтаксис:
Используется csharp
public class moving : MonoBehaviour
{
    public GameObject poezd;
    public float acceleration;
    private float speed;

    public GameObject[] waypoints;
    public int num = 0;

    public void run()
    {
        speed += acceleration * Time.deltaTime;
        Move();
    }

    public void stop()
    {
        speed -= acceleration * Time.deltaTime;
        Move();
    }


    private void Move()
    {
        gameObject.transform.LookAt(waypoints[num].transform.position);
        gameObject.transform.position += gameObject.transform.forward * speed * Time.deltaTime;
    }
}
 
Последний раз редактировалось tema_petrosyan 26 фев 2020, 21:35, всего редактировалось 1 раз.
tema_petrosyan
UNец
 
Сообщения: 28
Зарегистрирован: 27 ноя 2019, 20:37

Re: Не понимаю что не так.

Сообщение kezin636 16 фев 2020, 14:25

не понял, а почему название скрипта русское?
kezin636
UNIт
 
Сообщения: 83
Зарегистрирован: 11 июн 2018, 19:28

Re: Не понимаю что не так.

Сообщение kezin636 16 фев 2020, 14:27

Конечно, на onmousedown он будет единично вызывать функцию.
kezin636
UNIт
 
Сообщения: 83
Зарегистрирован: 11 июн 2018, 19:28

Re: Не понимаю что не так.

Сообщение kezin636 16 фев 2020, 14:28

используй в Update() тот самый код, который ты впихнул в OnMouseDown();
kezin636
UNIт
 
Сообщения: 83
Зарегистрирован: 11 июн 2018, 19:28

Re: Не понимаю что не так.

Сообщение tema_petrosyan 16 фев 2020, 14:53

kezin636 писал(а):используй в Update() тот самый код, который ты впихнул в OnMouseDown();

Сделал - результата ноль. Теперь он выдаёт ошибку NullReferenceExeption. Так же я поменял
Синтаксис:
Используется csharp
private int count = 1;

    public void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            engine.GetComponent<Moving>().run();
             control_wheel.transform.eulerAngles = new Vector3(-90, 0, 45);
            count += 1;
            if (count == 4)
            {
                control_wheel.transform.eulerAngles = new Vector3(-90, 0, 45);
                engine.GetComponent<Moving>().stop();
                count = 1;
            }
        }
    }

и теперь он вообще не реагирует, даже ошибку никакую не выдаёт.
Изображение
tema_petrosyan
UNец
 
Сообщения: 28
Зарегистрирован: 27 ноя 2019, 20:37

Re: Не понимаю что не так.

Сообщение tema_petrosyan 16 фев 2020, 15:31

Так, проблема решилась :ymparty: - всё заработало: колесо крутится, поезд едет, но теперь возникла другая проблема.
Когда игрок находится в кабине и нажимает на управляющее колесо, поезд начинает перемещаться, а игрока вдавливает в стену, а мне надо что бы можно было свободно ходить по кабине даже во время движения. Итак, как можно реализовать эту возможность?
Изображение
tema_petrosyan
UNец
 
Сообщения: 28
Зарегистрирован: 27 ноя 2019, 20:37

Re: Не понимаю что не так.

Сообщение 1max1 16 фев 2020, 15:48

tema_petrosyan писал(а):Так, проблема решилась :ymparty: - всё заработало: колесо крутится, поезд едет, но теперь возникла другая проблема.
Когда игрок находится в кабине и нажимает на управляющее колесо, поезд начинает перемещаться, а игрока вдавливает в стену, а мне надо что бы можно было свободно ходить по кабине даже во время движения. Итак, как можно реализовать эту возможность?

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


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

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

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