Crystal‘s Unity Notes:Unity基础

本文档详细介绍了Unity引擎的基础知识,包括GameObject、输入管理、物体移动、四元数、UI系统、刚体物理、碰撞检测、动画系统、音频处理、动画状态机、寻路系统等关键概念和组件的使用。内容涵盖了从基本的游戏对象操作到复杂的物理模拟和自动寻路,适合Unity初学者学习。
摘要由CSDN通过智能技术生成

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:连续碰撞检测:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值