Unity学习笔记——基础常用API(2)

Input输入方法

        //按键按下触发一次
        Input.GetKeyDown(KeyCode.Space);
        //按键抬起触发一次
        Input.GetKeyUp(KeyCode.Space);
        //按键按下一直触发
        Input.GetKey(KeyCode.Space);

        //鼠标事件  0:左键  1:右键  2:中间滑轮键
        //GetMouseButtonDown GetMouseButtonUp GetMouseButton 与按键触发一样
        Input.GetMouseButtonDown(0);

        //默认按钮事件 查看位置 Edit》projectSetting》input; inspector面板处
        //按钮名称是系统默认的
        //down up 和button出发次数和按键触发一样
        Input.GetButtonDown("left ctrl");

        //任何键按下 包括鼠标按键
        if (Input.anyKeyDown)
        {
            print("anykeydown");
        }

        //获取鼠标在屏幕上的位置
        print(Input.mousePosition);

随机数

        //范围内随机生成一个整数
        print(Random.Range(4, 10));
        //范围内随机生成一个小数
        print(Random.Range(4, 10f));

        //设置随机数数列种子,这个种子决定随机数生成 每个种子生成的随机数数列是一样的
        Random.InitState(0);
        //如果想要随机数完全随机 可以把种子设置成时间戳
        Random.InitState((int)System.DateTime.Now.Ticks);

        //在一个园内生成随机数(二维)
        print(Random.insideUnitCircle);
        //在一个求体内生成随机数(三维)
        print(Random.insideUnitCircle);

欧拉角和四元数

        //欧拉角 直接表示每个坐标轴旋转的角度
        print(cube.eulerAngles);
        //四元数,运算之后的数值,不方便观察
        print(cube.rotation);

        //设置角度方法
        //直接设置欧拉角
        cube.eulerAngles = new Vector3(45, 45, 45);
        //通过转换,把欧拉角转换为四元数
        cube.rotation = Quaternion.Euler(new Vector3(45, 45, 45));
        //四元数幻化为欧拉角的方法
        print(cube.rotation.eulerAngles);

LookRotation小案例

 

    public Transform Player;
    public Transform enemy;
    void Start()
    { 
    }
    void Update()
    {
        //LookRotation,看向目标角度
        //得到方向向量
        Vector3 dir = enemy.position - Player.position;
        //不旋转y 所以把y设置为0
        dir.y = 0;
        //利用lookrotation获得目标四元数
        Quaternion target = Quaternion.LookRotation(dir);
        //通过插值方法,进行一个动画的旋转
        Player.rotation = Quaternion.Slerp(Player.rotation, target, Time.deltaTime);
    }

Rigidbody

    public Rigidbody playerRgd;
    void Start()
    {
    }
    void Update()
    {
        //通过刚体来修改位置和旋转 比直接设置transform节省性能
        //物体移动到某个位置,直接移动过去 瞬间移动过去
        playerRgd.position = playerRgd.transform.position+Vector3.forward*Time.deltaTime;
        //物体移动到某个位置 平滑的移动过去 有动画效果
        playerRgd.MovePosition(playerRgd.transform.position + Vector3.forward * Time.deltaTime);
        //物体旋转到某个角度
        //playerRgd.MovePosition(Quaternion.Slerp(Player.rotation, target, Time.deltaTime));

        //addForce rigidbody添加一个力
        playerRgd.AddForce(Vector3.forward * 5);

    }

Camera常用方法 绘制与鼠标位置的射线

    private Camera mainCamera;
    // Start is called before the first frame update
    void Start()
    {
        //两种获取maincamera的方法
        //mainCamera = GameObject.Find("MainCaamera").GetComponent<Camera>();
        mainCamera = Camera.main;
    }

    // Update is called once per frame
    void Update()
    {
        //获取摄像机到鼠标位置的射线
        Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
        //获取鼠标是否碰撞到物体
        RaycastHit hit;
        bool isCollider = Physics.Raycast(ray, out hit);
        //如果碰撞到了,输出被碰撞的物体
        if (isCollider)
        {
            //hit.collider为碰撞到的物体
            Debug.Log(hit.collider);
        }
        //绘制出来射线
        //Debug.DrawRay(ray.origin, ray.direction * 10, Color.yellow);
    }

Application

        //工程所在目录
        print(Application.dataPath);
        //流数据目录 数据存入什么格式就是什么格式,不会应为untiy打包而改编成加密格式
        print(Application.streamingAssetsPath);
        //
        print(Application.persistentDataPath);
        //临时目录
        print(Application.temporaryCachePath);

        //标识
        print(Application.identifier);
        //公司名
        print(Application.companyName);
        //项目名称
        print(Application.productName);
        //安装名
        print(Application.installerName);
        //编译模式
        print(Application.installMode);
        //是否编辑器模式
        print(Application.isEditor);
        //是否焦点
        print(Application.isFocused);
        //是否是移动平台
        print(Application.isMobilePlatform);
        //是否正在运行
        print(Application.isPlaying);
        //运行平台
        print(Application.platform);
        //unity版本
        print(Application.unityVersion);
        //游戏版本
        print(Application.version);
        //是否可以在后台运行
        print(Application.runInBackground);

        //退出游戏 打包后才可以执行
        Application.Quit();
        //打开网址
        Application.OpenURL("www.baidu.com");
        //游戏截图
        //Application.CaptureScreenshot("游戏截图");

场景加载

            //通过index加载场景
            SceneManager.LoadScene(1);
            //通过场景名称加载场景
            SceneManager.LoadScene("02Scene");

            //异步加载场景 会返回一个加载的进度
            SceneManager.LoadSceneAsync(1);

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值