Unity脚本-初级Part 2

向量计算

在游戏开发中,我们使用向量来定义网络,方向和其他各种计算
在这里插入图片描述Vector3.magnitude(),计算向量大小
在这里插入图片描述在这里插入图片描述点乘积为0时,代表两个向量垂直
比如创作一个飞行模拟器,你需要检查世界坐标系的上向量与飞机自身的前向量
如果这两个是垂直的,就是点乘积为0时,飞机承受的阻力最小;
随着点乘积为正且变大,我们可以知道飞机在拉升,我们可以增加一些阻力;
如果点乘积为负且增加,我们就知道飞机正在下潜
在这里插入图片描述叉乘积产生的结果不是标量,是另外一个向量,这个新向量与原来的两个向量都垂直,可以用左手坐标系确定新向量的方向
在这里插入图片描述比如计算旋转坦克炮台时,施加扭矩所需的油,已知当前炮台指向方向和它需要面朝的方向,你需要叉乘这两个向量,计算出旋转扭矩环绕的轴
在这里插入图片描述

组件使用与不使用

使用 enabled标志位
在这里插入图片描述

`public class LightController : MonoBehaviour
{
    Light myLight;
    // Start is called before the first frame update
    void Start()
    {
        //初始化对象
        myLight = GetComponent<Light>();
    }

    // Update is called once per frame
    void Update()
    {
        //对对象进行操作
        if (Input.GetKeyDown(KeyCode.Space))
        {
            myLight.enabled = !myLight.enabled;
        }
        if (Input.GetKeyDown(KeyCode.Q))
        {
            myLight.color = Color.red;
        }
        if (Input.GetKeyDown(KeyCode.W))
        {
            myLight.color = Color.white;
        }
    }
}`

游戏对象激活控制

使用 SetActive()控制对象的激活,即是否显示在屏幕上

Translate和Rotate函数

Translate和Rotate函数是用来修改游戏对象位置和旋转的函数

transform.Translate(new Vector3(1, 0, 0));

代表X轴移动一个单位,如果是在Update()中,则每帧移动一个单位
通常会在后面乘以 Time.deltaTime

transform.Translate(new Vector3(1, 0, 0)*Time.deltaTime);

这意味着移动速度是米每秒,而不是米每帧
Unity中设置了快捷写法
在这里插入图片描述注意:
①这些函数都在本地坐标系工作,而不是世界坐标系,以上用法都是相对与其应用的对象的坐标的
②如果移动带碰撞体的物体,有时候它会发生物理交互,这就不应该使用translate和rotate,应使用物理类的函数;如需使用,就要拥有一个运动学的刚体
即rigidbody中 isKinematic 为 true

LookAt函数

LookAt函数可以用来使游戏对象的前方向指向世界里的另外一个位置

transform.LookAt(target);

注意:本地坐标的前方向会一直指向目标对象,世界坐标的摄像头则不会

Destory函数

Destory函数可以在运行时移除游戏对象,或者对象上的组件,也可以在移除前加一个延时
在这里插入图片描述

GetAxis函数

类似GetButton和GetKey;
区别:GetButton和GetKey返回布尔值,表示按键有没有被按下
GetAxis返回的是浮点数(-1~1)
在这里插入图片描述

OnMouseDown函数

OnMouseDown函数可以检测在碰撞体或者GUI元素上的点击

发布了58 篇原创文章 · 获赞 3 · 访问量 1951

猜你喜欢

转载自blog.csdn.net/qq_34343249/article/details/99706534