GameObject:节点类
gameObject:节点对象
按键
Input.GetMouseButtondown(0/1/2); //判断鼠标键是否被按下 (0表示左键,1表示右键,2表示滚轮)
Input.GetMouseButton(0/1/2); //判断鼠标键是否被按下(按下时一直执行)
Input.GetMouseButtonUp(0/1/2); //判断鼠标键是否按下后抬起
Input.GetKeyDown(KeyCode.“键盘按键名字”)) //判断键盘是否被按下
Input.GetKey(KeyCode.“键盘按键名字”)) //判断键盘是否被按下(按下时一直执行)
Input.GetKeyUp(KeyCode.“键盘按键名字”)) //判断键盘是否按下后抬起
键盘虚拟轴
找到虚拟轴:Edit=>Project Settings=>Input
Horizontal:
Name:轴名称
Negative Button:沿着正方向推动轴的控件;
Position Button:沿着负方向推动轴的控件;
Gravity:从1或-1回到0的速度
Dead:阈值,虚拟轴按下到某个值以内不会有反应
Sensitivity:轴向目标移动速度
让物体移动
1、transform.Transtate(方向);
2、transform.position;
3、施加力:addForce(方向*力的大小) 问题:四个方向方向都需要判断;
4、虚拟轴:为了解决不同设备之间的差异问题。
Input.GetAxis("轴方向")
Vertical:前后(-1 ~ 1)
Horizontal:左右(-1 ~ 1)
Mouse X:鼠标左右
Mouse Y:鼠标上下
Mouse ScrollWheel:滚轮
float horizontal = Input.GetAxis("Horizontal"); //获取前后虚拟轴
float vertical = Input.GetAxis("Vertical"); //获取左右虚拟轴
float mouseX = Input.GetAxis("Mouse X"); //获取鼠标左右虚拟轴
//可以都加个判断 horizontal != 0 || vertical != 0 就执行下面的
Vector3 move_dir = new Vector3(horizontal, 0, vertical); //.normalized多用于施加力
//将世界坐标改为本地坐标
move_dir = transform.TransformDirection(move_dir);
transform.position += move_dir * Time.deltaTime * moveSpeed;
//rigidbody.velocity = move_dir * moveSpeed; //施加力的写法
transform.eulerAngles += Vector3.up * mouseX * rotateSpeed;
四元数:计算机理解旋转一种方式,本身就表示一种旋转
Quaternion quaternion = Quaternion.Euler(欧拉角(transform.eulerAngles)); //欧拉角转四元数
Vector3 euler = 四元数(quaternion).eulerAngles; //四元数转欧拉角
四元数和欧拉角的几何意义:四元数*欧拉角 = 沿着一条轴旋转过后的向量位置
物体旋转:
transform.rotation = Quaternion.Euler(旋转的V3向量)
隐藏鼠标
Cursor.visible = false;
//设置鼠标出现位置
Cursor.lockState = CursorLockMode.None: //不设置(默认)
Cursor.lockState = CursorLockMode.Confined://限制光标移动到游戏窗口
Cursor.lockState = CursorLockMode.Locked://锁定光标到游戏窗口中心
Unity的UI:
GUI: 纯靠代码写;
UGUI: Unity自带的UI
NGUI: 插件
GUI
GUI:GUI 实现UI需要借助OnGUI的生命周期函数
OnGUI是每帧都会调用的生命周期函数
Rect(x轴,y轴,宽,高):矩形,UI坐标轴,x和y都是以UI坐标的原点为参照
private void OnGUI()
{
//给GUI定义一种style
GUIStyle style = new GUIStyle();
style.normal.textColor = new Color(0, 1, 0);//rgb:颜色参数
style.fontSize = 40;
//文本,Screen.width(屏幕宽度)
GUI.Label(new Rect(Screen.width/2-100, Screen.height/2, 200, 50), "吃掉的金币:" + coinNum,style);
//按钮:返回的是bool值,点击的时候返回TRUE
if(GUI.Button(new Rect(Screen.width / 2 - 100, Screen.height / 2 + 80, 200, 50), "跳转"))
{
SceneManager.LoadScene("Game");
}
/*
登录界面:
用户名:GUI.TextField(矩形,输入的内容)
密码:GUI.PasswordField(矩形,输入的内容,代替密码的符号,密码长度)
*/
Username = GUI.TextField(new Rect(Screen.width / 2 - 100, Screen.height / 2, 200, 30), Username);
Password = GUI.PasswordField(new Rect(Screen.width / 2 - 100, Screen.height / 2 + 80, 200, 30), Password, '*',11);
}
刚体(RigidBody):让物体拥有绝大部分的物理效果
Mass:质量
Drag:阻力
Angular Drag:角阻力
Use Gravity:是否使用重力
is Kinematic:是否开启动力学:为TRUE,游戏对象将不受物理引擎的影响,只能通过Transform,属性来操作,适用于模拟平台的移动或者有链式关节关节链接刚体的动画
Interpolate:插值:用于控制刚体运动的抖动情况
None:没有插值;
Interpolate:内插值。基于前一帧的Transform来平滑此次的Transform;
Extralate:外插值。基于下一帧的Transform来平滑此次的Transform。
Collision Detection:碰撞检测
Discrete:离散碰撞检测:改模式下当前物体会与场景中的所有物体进行碰撞检测;
Continuous:连续碰撞检测: