Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/55: Рейтинг темы: голосов - 55, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15

Считывание координат и запись в переменные

20.04.2020, 13:18. Показов 11494. Ответов 17

Студворк — интернет-сервис помощи студентам
Добрый день.
Пишу на c# скрипт для Unity. Делаю подводный объект, который двигается в зависимости от того, куда бы ты мышью не ткнул. То есть вначале ты нажимаешь в какую-то точку и туда отправляется объект. Далее нажимаешь еще раз и туда должен объект доплыть.
Мне нужно понять, как можно считывать координаты с мыши и записывать в переменные по отдельности(т.е. Х и Y должны быть в разных переменных). Находил только как считать координаты мыши и записать их в переменные, но это записывалось в void Update. А мне нужно считать это в Main.
InputGetMouseButtonDown работает только в Update, также как и InputMousePosition.x(y).
Нужно это для того, чтобы считало дифуры методом Рунге-Кутты 4-го порядка.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.04.2020, 13:18
Ответы с готовыми решениями:

Считывание координат из XML в массив и запись в ячейки
Вот такая задача у меня в массиве есть данные координат. По циклу я их использую в методе. Нужно в определенные ячейки пропускать... И...

Считывание GPS координат (долготы и широты) и запись в файл
Добрый день, у меня возникли трудности с считыванием координат с GPS датчика и через Network и записи всего этого в файл по тику таймера....

Считывание из бинарного файла и запись данных в две строковых переменные
Мне нужно считать две строки из бинарного файла "input.txt" и запихать их в переменные типа string. Открываю...

17
13 / 10 / 3
Регистрация: 01.01.2020
Сообщений: 85
20.04.2020, 23:47
Что вы подразумеваете под "Main". Как я знаю такого метода по стандарту в юнити нет. Вы наверное говорите о методе созданным ВАМИ.

На счёт Input.... . Они работают везде. От метода, в котором вы его используете не зависит.

И чтобы отдельно записать создайте 2 переменные(одня для оси х, вторая - y) типа float. Для первой PosX = Input.MousePosition.x, для второй вы поняли.
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
20.04.2020, 23:54  [ТС]
Да, метод имею ввиду свой. Но как мне вытащить эти переменные из метода Update? Они ведь там остаются и ими нельзя пользоваться, как я понял.

Добавлено через 4 минуты
И еще насчет Input. Пробую писать это в своем методе и он постоянно выдает координаты 0.
0
13 / 10 / 3
Регистрация: 01.01.2020
Сообщений: 85
20.04.2020, 23:57
Я кажется понял что у вас не так. Вы наверное переменные объявили в самом методе Update. Если так, то ими можно пользоваться только там же. Объявляйте их в самом верху класса. Теперь можно будет пользоватся ими во всём класе (так как обычно в юнити пользуются одним класом, то и во всём скрипте).

Добавлено через 2 минуты
Вы точно где нибудь вызываете свой метод?
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
21.04.2020, 00:05  [ТС]
Вопрос такой, я вот делаю в void Update такой код, который считывает координаты мыши:
C#
1
2
3
4
5
6
7
8
void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            x = Input.mousePosition.x;
            y = Input.mousePosition.y;
        }
    }
Я могу эти x и y использовать условно в void Start?(void Start до Update)
0
13 / 10 / 3
Регистрация: 01.01.2020
Сообщений: 85
21.04.2020, 00:10
Да, можете. И место положения метода никакой зависимости не создаёт.
1
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
21.04.2020, 00:19  [ТС]
Еще вопрос. Мне нужно взять объект, поставить его в одну точку и далее чтобы появился флажок(или без разницы что) и я его потащил куда-либо и условно ткнул куда-то и туда должен этот объект приплыть(через мои диффуры и метод рунге-кутты). Каким образом можно осуществить появление этого флажка ? И возможно ли сделать, чтобы было видно траекторию от объекта до флага?
0
13 / 10 / 3
Регистрация: 01.01.2020
Сообщений: 85
21.04.2020, 00:32
На счёт траектории я и сам не знаю как это сделать.

Можно создать объект(флаг) на сцене и в вашем коде получить на него ссылку. Далее просто надо присвоить координаты мышки координатам флажка. Он появится там где вы кликнули. Когда объект доплывёт к флажку выключите компонент SpriteRender (по моему он так называется) и ваш флажок исчезнет. Когда опять кликаете соответственно включите компонент.
1
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
21.04.2020, 20:14
Цитата Сообщение от piNine Посмотреть сообщение
И возможно ли сделать, чтобы было видно траекторию от объекта до флага?
Сделать можно практически всё. Но способ реализации, зависит от способа перемещения вашего объекта. Как он двигается? Просто по прямой? Может это AI с обходом препятствий? Это игра сбоку? Сверху? 2D? 3D?
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
21.04.2020, 20:19  [ТС]
Цитата Сообщение от samana Посмотреть сообщение
Сделать можно практически всё. Но способ реализации, зависит от способа перемещения вашего объекта. Как он двигается? Просто по прямой? Может это AI с обходом препятствий? Это игра сбоку? Сверху? 2D? 3D?
Он двигается по формулам, по сути это подводный объект. Все свелось к системе диффур, которые мне сказали решать методом Рунге-Кутты 4 порядка. 2d. Я сделал перемещение объекта, ну, тыкаешь на него и переносишь куда хочешь. Теперь мне нужно сделать так, чтобы после того как я перенёс главный объект куда захочу, дальше я нажимаю куда захочу и появлялся бы флаг, до которого шла бы траектория от главного объекта. Траектория высчитывается по системе диффур, как я понял. Вот все что есть. Возможно сможете как-то помочь.
Ну и далее объект идёт по траектории до флага и по достижении флаг исчезает.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
21.04.2020, 20:26
Цитата Сообщение от piNine Посмотреть сообщение
Все свелось к системе диффур, которые мне сказали решать методом Рунге-Кутты 4 порядка. 2d.
Честно говоря слышу эти слова впервые, поэтому вряд ли смогу помочь.
Но если ваш метод где-то внутри себя ищет траекторию до цели, то скорее всего эта траектория где-то в нём хранится и её можно вытащить и нарисовать на экране.
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
21.04.2020, 20:29  [ТС]
А как сделать так, чтобы только после перемещения основного объекта создать флаг можно было? Просто на данный момент я знаю только как создать объект на нажатие мыши и этот объект создаётся когда я перетаскиваю и основной объект. Ну и создаётся он бесконечно раз, то есть просто копии по сути. Это единственное что нашёл.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
21.04.2020, 20:42
Цитата Сообщение от piNine Посмотреть сообщение
А как сделать так, чтобы только после перемещения основного объекта создать флаг можно было?
Тогда необходимо создавать дополнительную логику, чтобы знать - когда объект двигается к цели, либо когда он стоит на месте. Обычно это какая нибудь bool переменная, например isMove.
Получается вот какая ситуация - у вас сейчас уже есть какой-то функционал, которым вы двигаете объект. Кроме вас, никто не знает - как там всё устроено и что вообще там происходит. А вы пытаетесь узнать у нас - как правильно изменить то, что мы в глаза не видели. На это сложно ответить.
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
21.04.2020, 20:49  [ТС]
samana, вот что есть на данный момент. Простое перемещение объекта нажатием на него(у меня круг) и создание копии какого-то объекта(у меня квадратик маленький, это собирался делать флагом)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Скрипт1 : MonoBehaviour
{
    float x, y;
    public GameObject flag;
 
    public void Spawn(Vector3 position)
    {
        Instantiate(flag).transform.position = position;
    }
 
    bool MouseDown = false;//нажатие мыши
    Vector3 StartPosition;//начало позиции
    private void Start()
    {
        StartPosition = GetComponent<Transform>().position;//запоминать начальную поз.
    }
 
    void OnMouseDown()//проверка нажатия мыши
    {
        MouseDown = true;//была нажата
    }
 
    void OnMouseUp()//проверка отпускания мыши
    {
        MouseDown = false;//была отпущена
    }
 
    //private double F(double x1, double y1)
    //{
 
    //      return (z2_shtrih*b0=b1-(b2*alpha*alpha+b3+2*b4)*z2*sqrt(z2*z2+z4*z4)-2*b5*alpha*z4*sqrt(z2*z2+z4*z4)));
    //}
    
    void Update()
    {
        Vector2 Cursor = Input.mousePosition;//позиция курсора
        
        Cursor = Camera.main.ScreenToWorldPoint(Cursor);//координаты относительно камеры преобразуются
        if (MouseDown)//если мышь нажата то задаем координаты объекту
        {
            this.transform.position = Cursor;//двигаем
        }
        if (Input.GetMouseButtonUp(0))//если отпустили нажатие то считать координаты
        {
            x = Input.mousePosition.x;
            y = Input.mousePosition.y;
            //Debug.Log(x);
        }
        
        if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            Vector3 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition, Camera.MonoOrStereoscopicEye.Mono);
            Vector3 adjustZ = new Vector3(worldPoint.x, worldPoint.y, flag.transform.position.z);
 
            Spawn(adjustZ);
        }
    }
 
}
Добавлено через 2 минуты
samana, X и Y переменные сделал, чтоб координаты объекта запомнить, для подсчета дифференциальных уравнений. Как понимаю надо еще делать переменные для запоминания флага, иначе мне просто не высчитать траекторию(мой метод требуют начальные данные и конечные).
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
21.04.2020, 20:59
Цитата Сообщение от piNine Посмотреть сообщение
Он двигается по формулам, по сути это подводный объект. Все свелось к системе диффур, которые мне сказали решать методом Рунге-Кутты 4 порядка.
Хм, этого ничего нет. Получается просто обычный перенос мышкой.
Я понял вас, попробую добавить функционал, чтобы ставить флаг и объект направлялся к нему по прямой и чтобы рисовалась траектория.
А вам пока подсказка, Vector2.MoveTorwards и Vector2.Lerp (эти методы меняют точку от начальной до конечной на заданный шаг).
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
21.04.2020, 21:06  [ТС]
samana, я пока что не прописывал диффуры и метод Рунге-Кутта 4го порядка. Это то не особо сложно, просто переписать, мне важно сейчас понять как все оформить.

Добавлено через 1 минуту
samana, ну и по идее я траекторию смогу переделать с прямой до такой как мне надо, поэтому пока что даже не стал вводить их в код.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
21.04.2020, 21:37
У меня сейчас совершенно ничего не получается сделать, извините что так, видимо не мой день.
Цитата Сообщение от piNine Посмотреть сообщение
ну и по идее я траекторию смогу переделать с прямой до такой как мне надо
Не могу согласиться, сейчас траектория простая - просто от точки А до Б по прямой, высчитывать ничего не нужно и начертить линию легко. Но если эта траектория будет изворотливая, то это совсем другая история.
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 15
21.04.2020, 21:39  [ТС]
samana, ну, мне хотя бы смысл понять, как это работает, там буду дальше разбираться. Ничего страшного! Все равно спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2020, 21:39
Помогаю со студенческими работами здесь

Как описываются переменные типа запись? В каких случаях целесообразно использовать переменные типа запись?
1. Как описываются переменные типа запись? 2. В каких случаях целесообразно использовать переменные типа запись? 3. Из каких...

Запись из формы данных в переменные php файла, данные из переменные используются в других файлах сайта
Всем привет! Ребят, подскажите пожалуйста! Есть один файл с обычной html формой, в которой обычные данные (фио, вэб-ссылка, контактные...

Считывание координат точки
Как можно реализовать чтение точек (их двумерных координат) так, чтобы не было неверного заполнения, а именно, в данном коде при вводе 2-х...

Считывание координат из StringGrid
Доброго времени суток. Задача: считать данные из стрингрида и перевести их в координаты точек. Ну и соответственно отметить на имэйдж. ...

Считывание координат из файла
Как реализовать считывание с файла координаты по x и по y, чтобы нарисовать потом график? Как должны располагаться координаты в файле? Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru