@vaz-vazovich
Делаю сайты

Почему не изменяется позиция игрока?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class circle : MonoBehaviour
{

    bool MouseDown = false;

    Vector3 posPlayer;

    void Start()
    {
        posPlayer = GetComponent<Transform>().position;
    }

    void onMouseDown()
    {
        MouseDown = true;
    }

    void onMouseUp()
    {
        MouseDown = false;
    }

    void Update()
    {
        Vector2 Cursor = Input.mousePosition;
        Cursor = Camera.main.ScreenToWorldPoint(Cursor);


        if(MouseDown)
        {
          posPlayer = Cursor;
        }
    }
}


Код почему то не работает, хотя смотрю и не вижу ошибок
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 3
motkot
@motkot
Программирование C#.
position - это не ссылочный тип.

Делайте так:

posPlayer.position = Cursor
Ответ написан
Комментировать
@NIKROTOS
Начинающий программист.
и так, если лкм нажата, то координаты курсора равны переменной хранящей 3 значения(не текущие координаты, а именно значения).
Если лкм не нажата, то курсор создаётся, после чего, приравнивается Input.mousePosition, что является отклонением от угла экрана в пикселях). После чего, это отклонение преобразуется в координаты.
Vector2 Cursor = Input.mousePosition;
        Cursor = Camera.main.ScreenToWorldPoint(Cursor);
    if(MouseDown)
        {
          posPlayer = Cursor;
        }

//логичней будет сделать так
public  Vector2 Cursor;//публичные переменные принято писать с заглавной буквы

    void Update()
    { 
          if(MouseDown)
        {
          posPlayer = Camera.main.ScreenToWorldPoint( Input.mousePosition);
        }
    }

Еще логичней будет получить ссылку на конкретный объект или компонент, как это делать, смотри здесь. https://habr.com/ru/post/128711/
В написанном коде, я этого не делал, так как давно не касался юнити и точно не помню как это записывается.
Ответ написан
Комментировать
@RandomProgrammer
Cursor - это класс unity. Не думаю что ошибка из-за этого, но мне кажется переменную лучше назвать по другому.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы