Input类

来源:互联网 发布:java web面试题 编辑:程序博客网 时间:2024/06/05 19:43

输入管理器可以设置项目的各种输入和操作。Edit->Project Settings->Input 这里写图片描述

获得键盘
if (Input.GetKey(KeyCode.W))
{
obj1.transform.Translate(Vector3.forward * Time.deltaTime * 2);
}
if (Input.GetKey(KeyCode.A))
{
obj1.transform.Rotate(new Vector3(0, -30, 0) * Time.deltaTime);
}
GetKeyDown按下某个键的时候
GetKeyUp;抬起某个键的时候

让对象循环沿Z轴移动10之后再返回原位的案例:1(点出x,y,z的方式)
if (obj1.transform.position.z>=10)
{
intFlag = -1;
}
if (obj1.transform.position.z<=0)
{
intFlag = 1;
}
obj1.transform.Translate(Vector3.forward * intFlag * Time.deltaTime * speed);

2:乒乓用法
float value = Mathf.PingPong(Time.time, 10)-5;(-5使整体移动5,变成-5至5的移动)
obj1.transform.position = startPosition(设定起始点保证其不变) + new Vector3(0, 0, value);
Rotate的2种用法
1. transform.Rotate(new Vector3(1, 0, 0));(围绕x轴转动)transform.Rotate(1, 2, 3);(简写)
2. transform.Rotate(Vector3.up, 30 * Time.deltaTime, Space.Self);(以自己的x轴以30度每秒的速度转动,Space.world(以世界坐标轴))
模拟太阳系案例 (围绕旋转RotateAround的使用)
//使对象围绕世界0点以y轴以每秒20度旋转
transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);
//自转,使对象以自己的y轴30度每秒旋转,Rotate默认自己的轴
transform.Rotate(new Vector3(0, 30, 0) * Time.deltaTime);
public Transform target;
(围绕某个对象[地球]的y轴旋转)
transform.RotateAround(target.position, target.up, 20 * Time.deltaTime);
transform.Rotate(new Vector3(0, 60, 0) * Time.deltaTime);
宝宝跟随玩家漂浮的案例(Vector3.Lerp的使用)
public Transform target;
public Vector3 offset;
offset = target.forward * -2 + target.up * 2;
transform.position = Vector3.Lerp(transform.position, target.position + offset, Time.deltaTime);(对象的变化位置为Lerp元素1和元素2之间的距离以秒数接近)
transform.rotation = target.rotation;(rotation方法为在世界坐标空间,储存为四元数变换的旋转角度。)
发现目标并射击案例
public GameObject bulletPrafab;(子弹)
public Transform target;(敌人)
public Transform shootPoint;(出弹口)
transform.LookAt(target);(LookAt旋转此变换,让向前向量指向target的当前位置。(照相机的视口对准目标))
GameObject bullet = GameObject.Instantiate(bulletPrafab,shootPoint.position,transform.rotation) as GameObject;(克隆子弹,在出弹口创建,沿着当前敌人旋转角度)
Destroy(bullet,2);(销毁子弹,两秒中销毁)


transform.Translate(transform.forward * Time.deltaTime * speed,Space.World);(子弹的移动变换)
Transform维护父子关系
Transform.root根:得到对象的祖宗
Transform.parent父级:得到对象的爸爸
Transform.childCount子物体数:得到对象的子物体数量
Transform.SetParent();设置父节点:下面案例对象3的父亲为对象1
obj3.SetParent(obj1);
Transform.DetachChildren分离子物体:将对象的子物体分离出去

获取鼠标信息
Input.mousePosition
Input.GetButton 获取按钮

Input.GetAxis 获取轴
根据坐标轴名称返回虚拟坐标系中的值。
使用控制器和键盘输入时此值范围在-1到1之间。如果坐标轴设置为鼠标运动增量,鼠标增量乘以坐标轴灵敏度的范围将不是-1到1 。

原创粉丝点击