U3D的控制

做游戏少不了控制,但是一个成熟的游戏引擎,是不能简单仅仅获取键盘中或者遥感确定的按键来控制,要考虑到用户更改游戏按键的情况,当然也得考虑到不同设备的不通输入方式,比如U3D是可以运行在iphone上的,iphone可没有键盘和上下左右键,他有平衡控制(简单化解为水平和垂直两个方向度数),如果用户使用飞行或者汽车方向盘手柄,那就不能简单用一个按键来描述了,需要有一个度数的问题(也可以简单分解为水平和垂直两个方向度数)。

U3D提供了一个Input类封装控制输入,不做详细解释,在后面我会举一些常用的例子来说明。 
Class Variables 
mousePositionThe current mouse position in pixel coordinates. (Read Only) 
anyKeyIs any key or mouse button currently held down? (Read Only) 
anyKeyDownReturns true the first frame the user hits any key or mouse button (Read Only). 
inputStringReturns the keyboard input entered this frame (Read Only). 
Class Functions 
GetAxisReturns the value of the virtual axis identified by axisName. 
GetAxisRawReturns the value of the virtual axis identified by axisName with no smoothing filtering applied. 
GetButtonReturns true while the virtual button identified by buttonName is held down. 
GetButtonDownReturns true during the frame the user pressed down the virtual button identified by buttonName. 
GetButtonUpReturns true the first frame the user releases the virtual button identified by buttonName. 
GetKeyReturns true while the user holds down the key identified by name. Think auto fire. 
GetKeyDownReturns true during the frame the user starts pressing down the key identified by name. 
GetKeyUpReturns true during the frame the user releases the key identified by name. 
GetMouseButtonReturns whether the the given mouse button is held down. 
GetMouseButtonDownReturns true during the frame the user pressed the given mouse button. 
GetMouseButtonUpReturns true during the frame the user releases the given mouse button. 
ResetInputAxesResets all input. After ResetInputAxes all axes return to 0 and all buttons return to 0 for one frame.

--------------------------------------------------------------------------------------------------------------------------------- 
获取键盘某一(这里是空格键)按键状态(bool):Input.GetKeyDown(KeyCode.Space)              这是最不通用的写法,不推荐 
获取虚拟按键(这里是Jump)按键状态(bool):Input.GetButton("Jump")       推荐用这种写法,用户可以设置按键Jump为空格键(默认就是空格) 
获取遥感(或iphone感应)垂直轴力度(是一个0-1之间的float):Input.GetAxis("Vertical“)  推荐写法,键盘的话默认按w或者up会瞬间提到1,要是遥感的话可以控制一个度,再乘以力的方向向量的话,就可以控制汽车之类的加速了。如果你直接写成键盘的w或者d,那就没办法控制力度了。 
获取遥感(或iphone感应)水平轴力度(同上):Input.GetAxis("Horizontal") 
获取鼠标中键状态:Input.GetAxis("Mouse ScrollWheel")
 
注:有些遥感可能水平方向会转超过1或者小于0的值出来(例如汽车遥感),为了避免错误的计算(乘以负数的话向量的方向可是会相反的),可以配合数学函数Mathf.Clamp01()来固定他的值在0和1之间。例如: 
motor = Mathf.Clamp01(Input.GetAxis("Vertical")); //设置汽车引擎力度为垂直方向力度

U3D的控制

时间: 2024-08-25 01:54:16

U3D的控制的相关文章

u3d人物控制

//https://blog.csdn.net/Htlas/article/details/79188008 //人物移动 http://gad.qq.com/article/detail/289212 //mesh 山丘地形 http://gad.qq.com/article/detail/289108 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Cube

U3D 摄像机镜头控制

如果要实现,摄像机跟随着主角运动,还有运用滚轮实现镜头的方法和缩小的实现原理 方法1:把主摄像机放到主角的下面,作为一个子对象,调整好摄像机的视角,此时就会跟随了. 方法2:用代码让摄像机的相关的position或rotation属性与主角的对应并且调整距离等. 鼠标滑轮缩放效果是,检测是否有滑轮滑动,如果是的话让摄像机与主角的距离随着滑轮值产生变化. 如果是实现飞行设计类的游戏: 可以实现主摄像机恒定移动,主角只能在摄像机的视角内进行移动.

[U3D 画起重机,绑脚本和控制它运动的基本操作]

之前在学习Unity3D,不知为何网上的教学资源真是少啊...我某段时间还卡在不知如何让物体绑个脚本自动运动.. 之所以要学习U3D是因为导师让我做的IOS项目里有个需要模拟起重机,从而控制真实起重机的动画(为何不是挖掘机)... 这里就总结下U3D的基础知识. ================================================== 1.Unity画物体 在左边的Hierarchy(层次)表处,找到Create,然后选择Cube.Mac系统也可以从上面菜单栏选择Ga

U3D 一个简单的角色控制脚本

之所以写这个脚本,是因为我想起了我还是新手的时候,那时为了一个角色控制脚本百度了半天还是一无所获,因为看不懂啊,都写的太高级了 希望这个脚本能够帮助那些 像曾经的我一样迷失于代码中的新手们能够清晰的理解这个角色控制的含义 ///角色控制脚本 public class Player : MonoBehaviour { public float m_speed=1;   //这个是定义的玩家的移动速度  之所以Public是因为为了方便对其进行调节  (public的属性和对象会在Unity中物体的

Unity3D(五)在U3D中添加鼠标控制、键盘操作

C#控制WASD键盘控制前后左右+空格键抬升高度.鼠标右键跟随旋转.滑轮控制放大缩小: using UnityEngine; using System.Collections; public class CameraControl : MonoBehaviour { // Use this for initialization private GameObject gameObject; /** * 鼠标 */ public bool mouseControlEvent = false;//判断

u3d Animator和脚本控制FPS骑士

using UnityEngine;using System.Collections; public class PlayerMove : MonoBehaviour { Transform _head; Animator _animator; void Start () { _head = transform.FindChild("Head"); _animator = GetComponent<Animator>(); } void Update () { Move()

改造u3d第一人称控制器,使之适合Cardboard+蓝牙手柄控制

一.在u3d编辑器中删除FPSController游戏对像中自带的Camera: 二.在u3d编辑器中将CardBoardMain游戏对像添加到FPSController的子物体: 三.修改脚本: 1.删除FirstPersonController脚本中的RotateView方法调用: 2.在CardboardHead中的UpdateHead中,修改FPSController对像的transform的Y轴上的转向: 以上,即可以完成使用cardboard追踪到的头部转向数据来控制第一人称游戏对像

U3D优化

容易忽略的美术资源的优化: 优化的美术制作真是一种感觉和经验的积累,能看出制作水平的不是做的效果多么犀利,而是得看制作的效果与对机器的要求等的性价比. 关于合并:  100个三角形的MESH,在渲染时与1500个面数的物体是没太大差别的,最佳的渲染设置应该在每个模型大约1500-4000个三角面. 材质共享:  如果需要通过脚本来访问复用材质属性,改变Renderer.material将会造成一份材质的拷贝.应该使用Renderer.sharedMaterial来保证材质的共享状态. 批处理动态

糍粑大叔的独游之旅-u3d实现弹出菜单(上)-动态列表

在u3d5.x中,使用ugui作为默认的界面系统,但控件实在太少,很多需求都不能满足,比如弹出菜单(PopupMenu) 我也懒得去网上找现成的实现,再加上现有代码已经有很多有关列表控件的功能,不想再重新动这些代码. 所以自己实现一个,目前先只实现核心.搭建控件相关类的骨干,后期再慢慢丰富和做的更花哨. 开篇之前声明,我的u3d理解非常有限,有很多也许本身自带的功能或有现成库功能我不知道,所以选择了自己探索或实现, 感觉太low欢迎给出好的意见. 定义和代码结构 PopupMenu是点击鼠标或按