Ошибка в скрипте C# Unity 2017.3.1.p4

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

Ошибка в скрипте C# Unity 2017.3.1.p4

Сообщение Segeja 13 апр 2018, 14:54

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class PlayerMove1 : MonoBehaviour
{
    public Vector3 curPosition;
    public Vector3 nextPosition;
    public float speed;
    public bool isMove = false;
    public float tre;

    void Start()
    {
        isMove = false;
        curPosition = transform.position;
        nextPosition = transform.position;
        GetComponent<Animation>().Play("idle");
    }


    void Update()
    {
        CharacterController controller = GetComponent<CharacterController>();
        if (Input.GetMouseButtonDown(0))
        {
            isMove = true;
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider.tag == "floor")
                {
                    //isMove
                    nextPosition = hit.point;
                    GetComponent<Animation>().Play("walk");
                }
            }
        }
        float distance = Vector3.Distance(new Vector3(transform.position.x, 0, transform.position.z), new Vector3(nextPosition.x, 0, nextPosition.z));
        if (curPosition != nextPosition && isMove)
        {
            transform.LookAt(nextPosition);
            Vector3 forward = transform.TransformDirection(Vector3.forward);
            controller.SimpleMove(forward * speed);
            if (distance < tre)
            {
                GetComponent<Animation>().Stop();
                GetComponent<Animation>().Play("idle");
                isMove = false;
                controller.SimpleMove(Vector3.zero);
            }
        }
    }
}    

Player должен идти по полу, а он у меня стоит и с ноги на ногу переминается в состоянии idle.
Unity говорит что ошибка вот здесь Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Ошибку выдаёт такую NullReferenceException: Object reference not set to an instance of an object
PlayerMove1.Update () (at Assets/Scripts/PlayerMove1.cs:28)
Заранее спасибо, за ответ
Segeja
UNец
 
Сообщения: 16
Зарегистрирован: 20 дек 2017, 11:05

Re: Ошибка в скрипте C# Unity 2017.3.1.p4

Сообщение Segeja 13 апр 2018, 16:28

Я потестил это что-то с персонажем
Segeja
UNец
 
Сообщения: 16
Зарегистрирован: 20 дек 2017, 11:05

Re: Ошибка в скрипте C# Unity 2017.3.1.p4

Сообщение 1max1 13 апр 2018, 20:47

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

Re: Ошибка в скрипте C# Unity 2017.3.1.p4

Сообщение Segeja 30 апр 2018, 12:32

Спасибо за подсказку так и есть, только теперь он боком ходит как это исправить, то есть боком лежит на полу ходит и вращается вокруг оси вниз головой
Segeja
UNец
 
Сообщения: 16
Зарегистрирован: 20 дек 2017, 11:05

Re: Ошибка в скрипте C# Unity 2017.3.1.p4

Сообщение 1max1 30 апр 2018, 13:13

transform.LookAt(nextPosition); Это в 2д работает не так как хотелось бы
http://www.unity3d.ru/distribution/view ... =5&t=45186
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Ошибка в скрипте C# Unity 2017.3.1.p4

Сообщение Segeja 30 апр 2018, 13:53

Дело в том что у меня как бы 3D, но да "Y" нет, пока не работает то что вы мне написали спасибо за ответ
я посмотрел в подсказке кода так там даже нет упоминания о LookAt2D
Segeja
UNец
 
Сообщения: 16
Зарегистрирован: 20 дек 2017, 11:05


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

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

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