Unity中关于鼠标移动变化的简单方法

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

public class CursorManager : MonoBehaviour
{
    public static CursorManager instance;

    //将效果鼠标图片移动至Unity属性面板
    public Texture2D cusor_normal;
    public Texture2D cusor_npc_talk;
    public Texture2D cusor_attack;
    public Texture2D cusor_lockTarget;
    public Texture2D cusor_pick;

    //表示使用鼠标左上角
    private Vector2 hotspot = Vector2.zero;
    //表示设备自动选择在硬件还是软件上使用此功能
    private CursorMode mode = CursorMode.Auto;
    
    void Start()
    {
        instance = this;
    }


    /*Cursor.SetCursor 方法用于设置鼠标指针的外观。该方法接受三个参数,分别是:
      cursor:表示要设置的鼠标指针的纹理。这通常是一个用于表示鼠标指针外观的图片或纹理。
      hotspot:表示鼠标指针的热点位置。热点是指鼠标指针图像中用于定位鼠标点击位置的点。它是相对于 
      鼠标指针图像的左上角的偏移量。通常,热点位于图像的中心,以便准确地表示鼠标点击位置。
      mode:表示鼠标指针的显示模式。它是一个枚举值,可以是以下几种之一:
      CursorMode.Auto:鼠标指针的外观将根据操作系统和硬件自动调整。
      CursorMode.ForceSoftware:鼠标指针的外观将强制使用软件渲染。
      CursorMode.ForceHardware:鼠标指针的外观将强制使用硬件渲染。
      通过调用Cursor.SetCursor方法并传递适当的参数,您可以更改鼠标指针的外观、热点位置和显示模式。*/
    public void SetNormal()
    {
        Cursor.SetCursor(cusor_normal, hotspot, mode);
    }

    public void SetNpcTalk()
    {
        Cursor.SetCursor(cusor_npc_talk,hotspot, mode);
    }
    public void SetAttack()
    {
        Cursor.SetCursor(cusor_attack, hotspot, mode);
    }
    public void SetLockTarget()
    {
        Cursor.SetCursor(cusor_lockTarget, hotspot, mode);
    }
}

通过此方法管理鼠标指针的变化(任意挂到一个空物体)

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

public class Wolf : MonoBehaviour
{
    //移到游戏物体时鼠标变色
    private void OnMouseEnter()
    {
        //可加判断条件
        CursorManager.instance.SetAttack();
    }
    //鼠标移出
    private void OnMouseExit()
    {
       
        CursorManager.instance.SetNormal();
    }
}

例如通过在游戏物体上挂载此方法调用

默认全局鼠标图片在File->BuildSettings->PlayerSettings->Player->Default Cursor设置使用

default  Icon是打包之后exe可执行文件的图标

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Unity 的陀螺仪 API 来获取设备的陀螺仪数据,然后将其映射到鼠标和键盘控制上。具体实现步骤如下: 1. 使用 `Input.gyro.enabled` 属性启用设备的陀螺仪。 2. 使用 `Input.gyro.attitude` 属性获取设备的欧拉角(yaw、pitch、roll)。 3. 对欧拉角进行处理,将其映射到鼠标移动和键盘控制上。例如,可以将 yaw 映射到水平方向的移动,pitch 映射到垂直方向的移动,roll 映射到旋转控制上。 4. 使用 Unity 的 Input 类来模拟鼠标和键盘控制,实现鼠标移动、点击和键盘的按键等功能。 以下是一个示例代码,实现了使用陀螺仪控制鼠标移动和方向的功能: ```csharp using UnityEngine; public class GyroControl : MonoBehaviour { public float sensitivity = 5.0f; // 控制灵敏度 public float speed = 5.0f; // 移动速度 public float rotationSpeed = 10.0f; // 旋转速度 private Vector3 lastEuler; private Vector3 currentEuler; void Start() { // 启用陀螺仪 Input.gyro.enabled = true; // 初始化欧拉角 lastEuler = Vector3.zero; currentEuler = Vector3.zero; } void Update() { // 获取陀螺仪数据 Quaternion gyroAttitude = Input.gyro.attitude; Vector3 gyroEuler = gyroAttitude.eulerAngles; currentEuler = new Vector3(-gyroEuler.y, gyroEuler.x, gyroEuler.z); // 计算欧拉角变化量 Vector3 deltaEuler = currentEuler - lastEuler; lastEuler = currentEuler; // 映射到鼠标移动和键盘控制 float mouseX = Input.GetAxis("Mouse X") + deltaEuler.x * sensitivity; float mouseY = Input.GetAxis("Mouse Y") + deltaEuler.y * sensitivity; float horizontal = deltaEuler.x * speed; float vertical = deltaEuler.y * speed; float rotation = deltaEuler.z * rotationSpeed; // 控制鼠标移动 Input.mousePosition = new Vector3(mouseX, mouseY, 0); // 控制键盘控制 Vector3 movement = new Vector3(horizontal, 0, vertical); transform.Translate(movement * Time.deltaTime); transform.Rotate(Vector3.up, rotation); } } ``` 需要注意的是,该代码仅作为示例,实际使用时需要根据具体情况进行调整。同时,还需要考虑用户体验,确保鼠标和键盘控制的灵敏度和平滑度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值