【发布时间】:2019-07-23 11:40:53
【问题描述】:
这个问题好像已经讨论过很多次了。但我找不到适合我的情况的解决方案。所有讨论都是关于根据鼠标移动或通过鼠标控制对象的相机旋转。但我需要用操纵杆(或键盘)控制鼠标指针。这看起来是一个非常简单的问题,但我很困惑。目前,我正在尝试隐藏硬件光标并重新创建自己的光标,用Input.GetAxis("Horizontal") 或Input.GetAxis("Mouse X") 控制它,但光标只是消失了,事件系统报告没有移动。但是,如果我使用 Input.mousePosition.x 我的自定义光标可以很好地创建并使用鼠标进行控制。不幸的是,我只需要使用操纵杆来控制它。此外,它不适用于项目设置>>输入(或者我可能在那里更改了一些错误)提前谢谢。
public class cursor : MonoBehaviour
{
public Texture2D cursorImage;
private int cursorWidth = 32;
private int cursorHeight = 32;
public float horizontalSpeed = 2.0F;
public float verticalSpeed = 2.0F;
void Start()
{
Cursor.visible = false;
}
void OnGUI()
{
float h = horizontalSpeed * Input.GetAxis("Horizontal") * Time.deltaTime;
float v = verticalSpeed * Input.GetAxis("Vertical") * Time.deltaTime;
GUI.DrawTexture(new Rect(h, Screen.height - v, cursorWidth, cursorHeight), cursorImage);
}
}
【问题讨论】:
-
如果有一个带有图像的画布覆盖层呢?您可以使用 RectTransform 使其移动
-
@Jichael 感谢您的建议。这确实是一个解决方案,我正在考虑这个问题。但是整个应用程序功能都是关于鼠标位置(显示坐标)的,我真的不想重写所有内容并获取这个画布世界位置并将其转换为显示坐标。项目已经准备好了,我只需要实现摇杆移动即可。
-
你知道
Input.GetMouseButtonDown(0);在这里绝对什么都不做,对吧?它返回一个你从不存储或使用的布尔值......如果你真的想实现自己的光标,可以使用 UI 和IPointerEnterHandler、IPointerClickHandler等,你必须实现自己的PointerInputModule -
@derHugo 我知道,这些行在这里没用,只是剩菜。抱歉,我会删除它们
标签: c# unity3d input mouse joystick