Unity 键盘,鼠标,触摸输入

Input.GetAxis 用法:

GetAxis 是个方法,需要传参数,参数为string类型,参数如下:

一:触屏类
1.Mouse X                鼠标沿着屏幕X移动时触发
2.Mouse Y                鼠标沿着屏幕Y移动时触发
3.Mouse ScrollWheel      当鼠标滚动轮滚动时触发
二:键盘操作类
1.Vertical               对应键盘上面的上下箭头,当按下上或下箭头时触发
2.Horizontal             对应键盘上面的左右箭头,当按下左或右箭头时触发

例:

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

public class InputFun : MonoBehaviour {

    public float speed = 10.0F;
    public float rotationSpeed = 100.0F;

    public float horizontalSpeed = 2.0F;
    public float verticalSpeed = 2.0F;

    void Update () {
        ReceiveInput();
    }

    void ReceiveInput()
    {
        //鼠标移动
        float h = horizontalSpeed * Input.GetAxis("Mouse X");
        float v = verticalSpeed * Input.GetAxis("Mouse Y");

        transform.Rotate(v, h, 0);


        //键盘按键
        float translation = Input.GetAxis("Vertical") * speed;
        float rotation = Input.GetAxis("Horizontal") * rotationSpeed;

        translation *= Time.deltaTime;
        rotation *= Time.deltaTime;

        transform.Translate(0, 0, translation);
        transform.Rotate(0, rotation, 0);

    }
}

以下转自:

http://chaoyueg.blog.163.com/blog/static/9706739220131120105829434/

按键

Input.GetKey(“up”) = Input.GetKey(KeyCode.UpArrow) 按住键盘上键

Input.GetKeyDown (“up”) 按下键盘上键

Input.GetKeyUp (“up”) 放开键盘上键

 (KeyCode.UpArrow)为键码 

Input.GetButton("") = Input.GetKey("") 两种几乎相同(目前没发现差异)

Input.GetButton一样会有分Input.GetButtonDown & Input.GetButtonUp

("")符号内为按键英文--参考Unity→Edit→Project Settings→Input(可新增)

PS : Unity内并没有内建android(返回与选单)功能键设定,必须使用者自行设定,
    在Input.GetButton("")中"escpae"&"menu"有对应返回与选单键

例: 按下返回就退出
if(Input.GetKeyDown (“escpae”))
{ 
    Application.Quit(); 
} 

滑鼠用

Input.GetMouseButton(0) 当0键被按住持续侦测(包含down和up各一次)

Input.GetMouseButtonDown(0) 当0键被按下一次

Input.GetMouseButtonUp(0) 当0键放开一次

键 : 0=左 1=中 2=右

PS : Unity有对应滑鼠左键输入功能部分可以用在Android手指触碰的操作上

获取轴

Input.GetAxis("") -- ("")参考Unity→Edit→Project Settings→Input(可新增)

根据座标轴传回虚拟座标值,取得输入装置输入时值范围[-1,1]

例: Input.GetAxis(“Mouse x”) - 可取得滑鼠横向移动增量

触碰

Input.touchCount - 触碰数量

Input.GetTouch(0) - 当第一支手指触碰时

0=第一支   1=第二支   2=第三支以此类推(触碰到点的侦测数量上限未测不知)

TouchPhase - 触碰状态有分五种Began Moved Stationary Ended Canceled

Began按下、Moved移动、Stationary按住没移动、Ended离开

Canceled用于触碰超过5点以上或贴至脸上时取消追踪

Input.GetTouch(0).position 取得第一支手指触碰座标


例 :

Touch 单点移动判断式

if(Input.touchCount == 1 && Input.GetTouch(0).phase==TouchPhase.Moved){}

(触碰数量为1个) 和(第一支手指触碰时的状态为移动) 时{}



Touch 双点移动判断式

if(Input.touchCount >1){
    if(Input.GetTouch(0).phase==TouchPhase.Moved ||
       Input.GetTouch(1).phase==TouchPhase.Moved){ }}

(触碰数量超过1个) 和(第一支手指触碰时的状态为移动)或者(第二支手指触碰时的状态为移动)时{}


Input.GetTouch(0) 和 Input.GetMouseButton(0)

单点时大致上互通(不确定是否完全相同)

多点上就会出现差异Touch会取手指前后顺序Mouse会取中心点
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值