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
[ Новые сообщения ·
Игроделы ·
Правила ·
Поиск ]
|
|
Модератор форума: beril |
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как изменять позицию курсора в Unity3D? (Позиция курсора) |
Как изменять позицию курсора в Unity3D? |
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|
||
|
||
Поиск: |
Jakop 0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 42 |
||||
1 |
||||
04.08.2020, 13:59. Показов 5616. Ответов 4 Метки unity 2d (Все метки)
Здравствуйте
__________________
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 |
|||
Координаты получаются разные пробуй привязать позицию через камеру…
1 |
Jakop 0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 42 |
||||||||
05.08.2020, 05:48 [ТС] |
4 |
|||||||
пробуй привязать позицию через камеру…
Mr Destructor, Добавлено через 6 минут
Mr Destructor, Получилось!
Спасибо
0 |
3088 / 1617 / 921 Регистрация: 26.10.2018 Сообщений: 4,620 |
|
05.08.2020, 05:49 |
5 |
Тебе курсор переместить к объекту надо или объект к курсору? Добавлено через 46 секунд
Получилось! Уже не важно)
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
- Go to Window>Package Manager.
- Search for Input System and click install.
- You will see a pop up to enable backends click YES.
- The editor will restart and the old input system will be disabled.
Step2: Modify the above code to suit the new input system
- Add using UnityEngine.InputSystem.
- 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.