| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity3D -> 正文阅读 |
|
[游戏开发]Unity3D |
(1)Input类的使用
GetMouseButton(0):按下鼠标左键不动,程序会一直运行,松开左键程序停止运行。 GetMouseButton(2):按下鼠标中键不动,程序会一直运行,松开中键程序停止运行。 GetMouseButton(1):按下鼠标右键不动,程序会一直运行,松开右键程序停止运行。 GetMouseButtonDown(0):按下鼠标左键时,程序运行一次 GetMouseButtonDown(1):按下鼠标右键时,程序运行一次 GetMouseButtonUp(2):按下鼠标中键时,程序不运行,松开中键时,程序运行一次。 if(Input.GetMouseButton(0)){ ?? 执行语句; }
GetKey? ???当通过名称指定的按键被用户按住时返回true GetKeyDown?? 当用户按下指定名称的按键时的那一帧返回true。 GetKeyUp??? 在用户释放给定名字的按键的那一帧返回true。 GetAxis("Horizontal")和GetAxis("Vertical")??? 水平轴和垂直轴 if(Input.GetKey("Down")){ ?? 执行语句; } 案例:用方向键或WASD键来模拟物体移动 float speed = 3f; ??? ??? void Update () { ??? ??? //float h = Time.deltaTime * speed; ??? ??? //按下WSAD键使游戏对象前后左右移动 ??? ??? /*if (Input.GetKey(KeyCode.A)) ??? ??? { ??? ??? ??? transform.Translate(new Vector3(-h, 0, 0)); ??? ??? } ??? ??? if (Input.GetKey(KeyCode.D)) ??? ??? { ??? ??? ??? transform.Translate(new Vector3(h, 0, 0)); ??? ??? } ??? ??? if (Input.GetKey(KeyCode.W)) ??? ??? { ??? ??? ??? transform.Translate(new Vector3(0, 0, h)); ??? ??? } ??? ??? if (Input.GetKey(KeyCode.S)) ??? ??? { ??? ??? ??? transform.Translate(new Vector3(0, 0, -h)); ??? ??? }*/ ??? ??? //Horizontal ??? ??? //Vertical ??? ??? float h= Input.GetAxis("Horizontal")*Time.deltaTime*speed; ??? ??? float v = Input.GetAxis("Vertical") * Time.deltaTime * speed; ??? ??? //transform.Translate(h, 0, v); ??? ??? transform.Translate(new Vector3(h, 0, v)); ??? }
GetButton?? 根据按钮名称返回true当对应的虚拟按钮被按住时。 GetButtonDown? 在给定名称的虚拟按钮被按下的那一帧返回true。 GetButtonUp??? 在用户释放指定名称的虚拟按钮时返回true。 案例:点击鼠标左键,给物体加一个力 if (Input.GetButtonDown("Fire1")) ??? ??? { ??? ??? ??? GameObject go = Instantiate(cube); ??? ??? ??? Rigidbody r = go.GetComponent<Rigidbody>();//从预设体身上获取刚体组件 ??? ??? ??? r.AddForce(0,0,10000);//给预设体加力 ??? }
首先android手机下载unityRmote便于测试,然后在unity上做相应设置。 案例1:单双击屏幕 public Text txt; ??? void Update () { ??????? //TouchPhase.Began:一个手指按下?? TouchPhase.Move:一个手指移动? TouchPhase.Stationary:一个手指按着不动 ????? ??//TouchPhase.Ended:一个手指离开屏幕 ??????? if (Input.touchCount > 0)//单击屏幕 ??????? { ??????????? Touch t = Input.GetTouch(0);//获得第一根手指 ??????????? if(Input.touchCount==1 && t.phase == TouchPhase.Began) ??????????? { ??????????????? txt.text = "单击了屏幕"; ???????? ???} ??????????? if (Input.touchCount ==2) ??????????? { ??????????????? txt.text = "双击了屏幕"; ??????????? } ??????? } ??? } 案例2:触摸屏幕手指控制物体移动(跟随手指移动) public Transform currTouchObj; ??? float touchObjMoveSpeed = 3f; ??? void Update() ??? { ??????? if (Input.touchCount == 1) ??????? { ??????????? Touch firstTouch = Input.GetTouch(0); ??????????? if (firstTouch.phase == TouchPhase.Began) ??????????? { ??????????????? Ray ray = Camera.main.ScreenPointToRay(firstTouch.position); ??????????????? RaycastHit hit; ??????????????? if (Physics.Raycast(ray, out hit)) ??????????????? { ??????????????????? //获取当前触摸到的物体 ??????????????????? currTouchObj = hit.collider.transform; ??????????????? } ??????????? } ??????????? if (Input.GetTouch(0).phase == TouchPhase.Moved) ??????????? { ??????????????? if (currTouchObj) ??????????????? { ??????????????????? Vector3 touchDeltaPos = Input.GetTouch(0).deltaPosition; ??????????????????? currTouchObj.Translate(touchDeltaPos.x * touchObjMoveSpeed, touchDeltaPos.y * touchObjMoveSpeed, 0, Space.World); ???????? ???????} ??????????? } ??????? } ??? } |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 0:55:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |