Как изменить положение курсора unity

Suggest a change

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Your name

Your email

Suggestion*

Cancel


public static Vector3 mousePosition;

Description

The current mouse position in pixel coordinates. (Read Only).

Input.mousePosition is a Vector3 for compatibility with functions that have Vector3 arguments. The z component of the Vector3 is always 0.

The bottom-left of the screen or window is at (0, 0).
The top-right of the screen or window is at (Screen.width, Screen.height).

Note: Input.mousePosition reports the position of the mouse even when it is not inside the Game View, such as when Cursor.lockState is set to CursorLockMode.None. When running in windowed mode with an unconfined cursor, position values smaller than 0 or greater than the screen dimensions (Screen.width,Screen.height) indicate that the mouse cursor is outside of the game window.

In the following example, the x and y coordinates of the mouse position are printed when the “Fire1” button is clicked.

Изменить положение курсора

Изменить положение курсора

Добрый день. Использую код

Используется csharp

public void Update ()
        {
                        float rotationX = transform.localEulerAngles.y + Input.GetAxis(«Mouse X») * sensitivityX;
                        rotationY += Input.GetAxis(«Mouse Y») * sensitivityY;    
                        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
                        if (нажата кнопка) {изменить положение курсора то есть чтоб камера стала смотреть ровно по горизонтали}
                        transform.localEulerAngles = new Vector3(rotationY, rotationX, 0); // поворачиваем камеру куда
        }
 

Как изменить положение курсора чтоб rotationY = 0 ?
От этой переменной зависить куда смотрит камера.

DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Изменить положение курсора

Сообщение Skap 22 дек 2014, 15:12

Skap
UNIт
 
Сообщения: 53
Зарегистрирован: 09 апр 2013, 14:43

Re: Изменить положение курсора

Сообщение DanilaDIV 24 дек 2014, 09:48

Так и не разобрался(
Как программно изменить значения которые берутся из Input.GetAxis(«Mouse Y») ? То есть поменять координаты мыши как я понял.

DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Изменить положение курсора

Сообщение v319 24 дек 2014, 16:13

А зачем? Если у ваc fps, то мышь вообще лучше спрятать подальше и показывать только в менюшках, иначе получится как в scp про лестницу…

Аватара пользователя
v319
UNIт
 
Сообщения: 88
Зарегистрирован: 10 мар 2014, 20:48

Re: Изменить положение курсора

Сообщение DanilaDIV 24 дек 2014, 16:44

ну спрячу я этот курсор но переменная все равно будет зависеть от того как будем двигать мышью. Голова(камера) же от нее крутиться. а я хочу по нажатию кнопки чтоб голова смотрела прямо на горизонт

Используется csharp

rotationY += Input.GetAxis(«Mouse Y») * sensitivityY;

DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Изменить положение курсора

Сообщение v319 24 дек 2014, 18:18

Ну да, но ведь в конечном итоге вы хотите повернуть камеруголову, а не мышь. В очень многих играх типа шутер курсор вообще заблокирован в центре приложения (и, при этом, скрыт)

Аватара пользователя
v319
UNIт
 
Сообщения: 88
Зарегистрирован: 10 мар 2014, 20:48

Re: Изменить положение курсора

Сообщение Левш@ 24 дек 2014, 21:02

Как программно изменить значения которые берутся из Input.GetAxis(«Mouse Y») ? То есть поменять координаты мыши

По сути никак… и никакого смысла в этом.
Эти данные предназначены для чтения а не для изменения.

Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Изменить положение курсора

Сообщение getAlex 26 дек 2014, 18:08

DanilaDIV писал(а):Как программно изменить значения которые берутся из Input.GetAxis(«Mouse Y»)

Не помню точно, но нужно подключить какую-то библиотеку винды.
Как-то так приблизительно (код неверный):
[DllImport (System.Windows.Forms.dll)]
….
using System.Drawing.Point;
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Vector2(0f,0f);

Но это из разряда решений «а давайте будут не пули лететь к врагу, а мы будем весь мир двигать, чтоб пуля попала в него, потому что я не знаю как двигать пулю»

getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Google [Bot], krauser0993 и гости: 27



[ Новые сообщения ·
Игроделы ·
Правила ·
Поиск ]

  • Страница 1 из 1
  • 1

Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как изменять позицию курсора в Unity3D? (Позиция курсора)

Как изменять позицию курсора в Unity3D?

Teapot_Proger Дата: Среда, 06 Марта 2013, 23:31 | Сообщение # 1

был не раз

Сообщений: 6

Все сообщения участника

Темы участника

Темы с постами юзера

Сейчас нет на сайте

Перерыл все нашел это :MouseCursor.ResizeHorizontal=5; Но ругается :error CS0131: The left-hand side of an assignment must be a variable, a property or an indexer
Поже помогите у меня проект половина уже сделана на этом деле застрял sad
seaman Дата: Четверг, 07 Марта 2013, 00:01 | Сообщение # 2

старожил

Сообщений: 1324

Все сообщения участника

Темы участника

Темы с постами юзера

Сейчас нет на сайте

MouseCursor — это класс редактора а не игры.

Стандартный курсор двигается сам от мышки. Вам нужно двигать его не зависимо от мышки?

Teapot_Proger Дата: Четверг, 07 Марта 2013, 08:20 | Сообщение # 3

был не раз

Сообщений: 6

Все сообщения участника

Темы участника

Темы с постами юзера

Сейчас нет на сайте

«Вам нужно двигать его не зависимо от мышки?»
Да это то что нужно, просто перерыл все и нашел только это,либо это слишком просто что никто об этом не пишет, либо слишком сложно что никто об этом не знает smile
seaman Дата: Четверг, 07 Марта 2013, 08:46 | Сообщение # 4

старожил

Сообщений: 1324

Все сообщения участника

Темы участника

Темы с постами юзера

Сейчас нет на сайте

Тогда нужно так.
1. Скрываем стандартный курсор.
Screen.showCursor = false;
2. Создаем свой курсор — GameObject + Plane + Texture с нужным видом курсора
3. Двигаем его как нам заблагорассудится.
Teapot_Proger Дата: Четверг, 07 Марта 2013, 08:49 | Сообщение # 5

был не раз

Сообщений: 6

Все сообщения участника

Темы участника

Темы с постами юзера

Сейчас нет на сайте

А системный курсор никак нельзя двигать?
Левша Дата: Четверг, 07 Марта 2013, 15:29 | Сообщение # 6

почти ветеран

Сообщений: 992

Все сообщения участника

Темы участника

Темы с постами юзера

Сейчас нет на сайте

Стандартно никак не двигать, только для чтения.


X.cor.R (Prologue)

Teapot_Proger Дата: Понедельник, 11 Марта 2013, 00:04 | Сообщение # 7

был не раз

Сообщений: 6

Все сообщения участника

Темы участника

Темы с постами юзера

Сейчас нет на сайте

Блин(((

Сообщение отредактировал Teapot_ProgerПонедельник, 11 Марта 2013, 00:14

Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как изменять позицию курсора в Unity3D? (Позиция курсора)
  • Страница 1 из 1
  • 1

Поиск:

Jakop

0 / 0 / 0

Регистрация: 17.04.2015

Сообщений: 42

1

04.08.2020, 13:59. Показов 5616. Ответов 4

Метки unity 2d (Все метки)


Здравствуйте
Есть UI объект (Image)
Хочу присвоить к позиции моего объекта позицию мишки
Координаты получаются разные. Проблему с мировыми и локальными координатами понял, но исправить свою проблему не смог.
Вот кусок кода

C#
1
2
3
4
            
            сhangePos = transform.localPosition;
            сhangePos =  Input.mousePosition;
            transform.localPosition = сhangePos;

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



293 / 215 / 85

Регистрация: 17.02.2016

Сообщений: 1,269

Записей в блоге: 1

04.08.2020, 14:26

2

transform.localPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
попробуй чтото типа этого



0



Mr Destructor

7 / 6 / 2

Регистрация: 30.07.2013

Сообщений: 94

04.08.2020, 22:45

3

Цитата
Сообщение от Jakop
Посмотреть сообщение

Координаты получаются разные

пробуй привязать позицию через камеру…

C#
1
Vector3 сhangePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);



1



Jakop

0 / 0 / 0

Регистрация: 17.04.2015

Сообщений: 42

05.08.2020, 05:48

 [ТС]

4

Цитата
Сообщение от Mr Destructor
Посмотреть сообщение

пробуй привязать позицию через камеру…

C#
1
Vector3 сhangePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

Mr Destructor,
Пробовал не помогло
Координаты уехали к началу координат родителя и меняются относительно медленнее чем курсор.

Добавлено через 6 минут

Цитата
Сообщение от Jakop
Посмотреть сообщение

Mr Destructor,
Пробовал не помогло
Координаты уехали к началу координат родителя и меняются относительно медленнее чем курсор.

Получилось!
Сам не правильно менял позицию
Я менял локальную позицию, не надо было

C#
1
2
3
4
           
сhangePos = transform.position;
сhangePos =  Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = сhangePos;

Спасибо



0



3088 / 1617 / 921

Регистрация: 26.10.2018

Сообщений: 4,620

05.08.2020, 05:49

5

Тебе курсор переместить к объекту надо или объект к курсору?

Добавлено через 46 секунд

Цитата
Сообщение от Jakop
Посмотреть сообщение

Получилось!

Уже не важно)



0



Unity Input system returns the mouse position with a single command. But the mouse position cannot be directly used in the game. Unity returns the mouse position in pixels; you need to convert it into world space coordinates to use it in your game. In this tutorial, we will see how to get mouse position in Unity using both the old Input system and the new Unity input System. And also, how to use it in different scenarios of your game.

Step1: Get Mouse position

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    void Update()
    {
        Vector3 mousePos = Input.mousePosition;            
    }
}

Mouse position will be returned to the X and Y axis based on the width and height of the screen.

Step2: Convert mouse position to world Position (both 2D and 3D)

Mouse position obtained in the previous has zero value for the Z axis. When converting mouse position from screen to world point this may cause the object to vanish from the camera view. To avoid this, we give the cameras clip plane distance as the Z value.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    void Update()
    {
        Vector3 mousePos = Input.mousePosition;   
        mousePos.z=Camera.main.nearClipPlane;
        Vector3 Worldpos=Camera.main.ScreenToWorldPoint(mousePos);  
        Vector2 Worldpos2D=new Vector2(Worldpos.x,Worldpos.y)
        //Worldpos2D is required if you are making a 2D game 
       
    }
}

Step3: Use the mouse position in your game

Let’s instantiate a prefab in Unity at the mouse position

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    public GameObject Player;
    bool player_dead;
    void Update()
    {
        Vector3 mousePos = Input.mousePosition;   
        mousePos.z=Camera.main.nearClipPlane;
        Vector3 Worldpos=Camera.main.ScreenToWorldPoint(mousePos);  
        if(player_dead)
        {
             Instantiate(Player, Worldpos, Quaternion.identity);
        }
       
    }
}

Using mouse position in a 2D game

We can use the X and Y coordinates of our 3D world position to get the mouse position in 2D.

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    public GameObject Player2D;
    bool player_dead;
    void Update()
    {
        Vector3 mousePos = Input.mousePosition;   
        mousePos.z=Camera.main.nearClipPlane;
        Vector3 Worldpos=Camera.main.ScreenToWorldPoint(mousePos);  
        Vector2 Worldpos2D=new Vector2(Worldpos.x,Worldpos.y)
        if(player_dead)
        {
             Instantiate(Player2D, Worldpos2D, Quaternion.identity);
        }
       
    }
}

Get Mouse position when the mouse is clicked

In the above example, the code will return the mouse position in all frames. If that is not what you want you can put in a condition like mouse click to get the mouse position. The old input system uses “Input.GetMouseButtonDown(0)” to get the mouse click. You can replace 0 with 1 or 2 depending on which mouse button you want to detect.

Here is an example code

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    public GameObject Player;
    bool player_dead;
    void Update()
    {
       if (Input.GetMouseButtonDown(0)) // returns true when the mouse left button is pressed
      {
            Vector3 mousePos = Input.mousePosition;   
            mousePos.z=Camera.main.nearClipPlane;
            Vector3 Worldpos=Camera.main.ScreenToWorldPoint(mousePos);  
            if(player_dead)
           {
                 Instantiate(Player, Worldpos, Quaternion.identity);
           }
       }
    }
}

Get mouse position in New Unity input system

Step1: Install the new Input system

  1. Go to Window>Package Manager.
  2. Search for Input System and click install.
  3. You will see a pop up to enable backends click YES.
  4. The editor will restart and the old input system will be disabled.

Step2: Modify the above code to suit the new input system

  1. Add using UnityEngine.InputSystem.
  2. Change Input.mouseposition to  Mouse.current.position.ReadValue()
using UnityEngine;
using System.Collections;
using UnityEngine.InputSystem;

public class ExampleClass : MonoBehaviour
{
    public GameObject Player;
    bool player_dead;
    void Update()
    {
        Vector3 mousePos = Mouse.current.position.ReadValue();   
        mousePos.z=Camera.main.nearClipPlane;
        Vector3 Worldpos=Camera.main.ScreenToWorldPoint(mousePos);  
        if(player_dead)
        {
             Instantiate(Player, Worldpos, Quaternion.identity);
        }
       
    }
}

Get mouse button down Unity new input system

Similar to the example in the old input system if you want to get the mouse position only when the left button is pressed you have to replace “Input.GetMouseButtonDown(0)” with “Mouse.current.leftButton.wasPressedThisFrame”.

Here is the sample code for that

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    public GameObject Player;
    bool player_dead;
    void Update()
    {
       if (Mouse.current.leftButton.wasPressedThisFrame) // returns true when the mouse left button is pressed
      {
            Vector3 mousePos = Mouse.current.position.ReadValue();   
            mousePos.z=Camera.main.nearClipPlane;
            Vector3 Worldpos=Camera.main.ScreenToWorldPoint(mousePos);  
            if(player_dead)
           {
                 Instantiate(Player, Worldpos, Quaternion.identity);
           }
       }
    }
}

Hope it was helpful. If you have any other questions on getting mouse position, please leave it in the comment box below.

Like this post? Please share to your friends:
  • Как изменить положение кнопок навигации на realme
  • Как изменить положение кнопок на андроид
  • Как изменить положение кнопок майнкрафт
  • Как изменить положение кнопок внизу экрана телефона
  • Как изменить положение кнопки на странице