Unity3D基础笔迹

Create Empty
挂在脚本 充当游戏控制器 GameControler

获取脚本挂在的游戏对象 属性

gameObject.name
gameObject.tag

获取游戏对象的 激活状态 & 修改状态

gameObject.activeSelf
gameObject.SetActive(false);

获取游戏对象 身上组建

CubeController c = gameObject.GetComponent<CubeController>();

给游戏对象 添加组件

Light l = gameObject.AddComponent<Light>();

通过Tag 名字查找游戏对象

GameObject g= GameObject.FindGameObjectWithTag("Player");
GameObject gg = GameObject.Find("Main Camera");
GameObject[] ggg = GameObject.FindGameObjectsWithTag("Plater");

三个方向的 分量
Vector3 就是一个类 表示向量 既有大小 又有方向的量

        Vector3 v = new Vector3();
        float x = v.x;
        float y = v.y;
        float z = v.z;

        //获取V单位向量
        v.Normalize();
        Vector3 vn = v.normalized;

        //获取V长度
        float ll = v.magnitude;

        //表示世界坐标系 Y轴正方向上的单位向量
        Vector3.up;  
        vector3.down;
        vector3.right;
        Vector3.left;
        Vector3.forward;
        Vector3.back;
        Vector3.zero;

求两个向量的夹角

        Vector3 v1 = new Vector3(1.4f, 6f, 7.2f);
        Vector3 v2 = new Vector3(2f, 6.5f, 12.3f);
        Vector3.Angle(v1, v2);

获取两个点的距离

        Vector3 pos1 = new Vector3(4f, 2f, 11f);
        Vector3 pos2 = new Vector3(2f, 12.6f, 8f);
        float d = Vector3.Distance(pos1, pos2);

向量点乘

float dd = Vector3.Dot(v1, v2);

向量叉乘

Vector3 vc = Vector3.Cross(v1, v2);

获取当前脚本所挂在的游戏对象身上的Transform 组件
控制游戏对象的位置 旋转 缩放

       // 组建的世界坐标

       Vector3 v= transform.position;
       //局部坐标
       transform.localPosition;

       //一般不直接修改四元数
        transform.rotation;

        //重新指定游戏对象 父对象transform 组件
        transform.parent;

        //获取当前游戏对象的 根父对象
        transform.root;

        //获取当前游戏对象 叫做cube 的子对象
        transform.Find("Cube");
        transform.FindChild("Cube");

            //世界坐标
            transform.position = new Vector3(0,0,0);

            //局部坐标
            transform.localPosition = new Vector3(0, 0, 0);

            //缩放
            transform.localScale = new Vector3(1f, 2f, 1f);


            //改变游戏对象位置
            transform.Translate(new Vector3(0,0.1f,0));

            //旋转当前游戏对象
            transform.Rotate(Vector3.up,10f);
            //欧拉角-属性 
            transform.localEulerAngles = new Vector3(0f,45f,0f);

        //让当前游戏对象 每秒准确旋转 30度
        transform.Rotate(Vector3.up, Time.deltaTime * angleSpeed);

Time

            float f = Time.time;
            print("从游戏开始到当前"+f);

            //从上一帧开始 到当前帧结束 间隔
            float delta = Time.deltaTime;
            print(delta);

        //表示 时间流逝的快慢
        //1 -表示正常时间流逝
        //2 -表示正常速度两倍
        //0 -时间暂定
        //float ts = Time.timeScale;


        //求绝对值
        //int i = Mathf.Abs(-12);

        求最大最小值
        //Mathf.Max(2, 3, 4, 5, 6, 7, 2);
        //Mathf.Min(3, 4, 5, 6, 7, 8, 2);

        // 三角函数
        //float sin= Mathf.Sin();
        //float cos= Mathf.Cos();

        //π
        //Mathf.PI;

        //平方根
        //Mathf.Sqrt();

给当前游戏对象 施加一个力 需要添加刚体

        private Rigidbody r;
        r = GetComponent<Rigidbody>();
        r.AddForce(new Vector3(0f, 100f, 0f));

     //扭矩 可以使游戏对象旋转
       r.AddTorque(new Vector3(0f,100f,0f));

     //给游戏对象 在指定的位置上 添加一个力
     r.AddForceAtPosition(new Vector3(0f, 10f, 0f), new Vector3(.05f, 0.5f, 0.5f));

     //爆炸力
     r.AddExplosionForce(1500f,Vector3.zero,10f);

//代码生成 游戏对象


            public GameObject playerPrefab;

            Vector3 pos = new Vector3();
            pos.y= 0f;
            //使用Random.range 方法产生随机数
            pos.x = Random.Range(-5f, 5f);
            pos.z = Random.Range(-5f, 5f);
            float angle = Random.Range(0f, 360f);

            //1使用哪个预设体 创建游戏对象
            //2创建出的游戏对象 初始位置
            //3创建出的游戏对象 初始旋转角度

            //生成 游戏对象
              Instantiate(playerPrefab, pos, Quaternion.AngleAxis(angle, Vector3.up));
             //添加组件
            //.AddComponent<Test>()

鼠标事件

    //鼠标事件

        //按下
      void OnMouseDown()
    {
        print("Down");
    }


    //任何地方抬起
      void OnMouseUp()
    {
        print("Up");
    }


    //移动
      void OnMouseDrag()
    {
        print("Drag");
    }


    // 当鼠标进入到内部时 调用
      void OnMouseEnter()
    {
        print("Enter");
    }


    // 当鼠标离开内部时 调用
      void OnMouseExit()
    {
        print("Exit");

    }


    // 当鼠标持续停留在游戏对象身上 调用
      void OnMouseOver()
    {
        print("Over");
    }



    //当我们想点击按钮 一样点击游戏对象 
      void OnMouseUpAsButton()
    {
        print("UpAsButton");
    }

碰撞与触发器监听

    //碰撞相关的三个事件

    //开始碰撞
    private void OnCollisionEnter(Collision collision)
    {
        print("开始碰撞");
    }

    private void OnCollisionExit(Collision collision)
    {
        print("碰撞结束");
    }

    //

    private void OnCollisionStay(Collision collision)
    {
        print("碰撞中");

        //判断碰撞中 碰撞的是什么
        if (string.Equals("Cube2",collision.gameObject.name))
        {
            print("碰撞了汽车");
        }

    }

    //触发器相关 三个事件

    需要取消 Collider 的 iS Trigger
    //触发开始
    private void OnTriggerEnter(Collider other)
    {
        print("---触发");
    }


    //触发范围内 持续调用
    private void OnTriggerStay(Collider other)
    {
        print("---触发范围内");
    }

    //离开出发范围 调用一次
    private void OnTriggerExit(Collider other)
    {
        print("离开触发范围");
    }
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页